TCP/IP协议簇-程序员宅基地

技术标签: 网络  安全  网络协议  tcp/ip  

简介

        TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCPIP两个协议,而是指一个由FTPSMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中。

模型

        OSI模型

                 

        应用层:为终端用户提供网络服务接口

        表示层:提供数据格式转换服务

        会话层:提供建立、管理、终止会话服务

        传输层:定义传输数据的协议端口,以及流控和差错校验(端到端防火墙)

        网络层:进行逻辑寻址(IP地址)实现不同网络之间的路径选择(路由器)

        数据链路层:建立逻辑链接、进行硬件地址寻址、差错校验等一些功能(交换机网卡)

        物理层:建立、维护、断开物理链接(网卡、网线、中继器、集线器、光纤)

        TCP/IP模型

                 

协议和端口

        ​​​应用层 

协议

作用

端口号

对应的传输层协议

HTTP超文本传输协议

提供Web服务

80

TCP

HTTPS

加密 Web 服务

443

TCP

FTP文件传输协议

共享文件

20/21

TCP

TFTP简单的文件传输

69

UDP

SSH

远程登录(密文)

22

TCP

Telnet

远程登录(明文)

23

TCP

DHCP动态主机控制协议

动态分配IP

67/68

UDP

DNS域名解析协议

解析域名

53

TCP/UDP

RDP远程桌面协议

远程桌面显示

3389

TCP

POP3电子邮件协议三

接收邮件

110

TCP

SMTP简单邮件传输协议

发送邮件

25

TCP

SMB协议

通信服务

445

UDP

        传输层

        TCP协议:提供用户之间的面向连接可靠报文传输服务

        UDP协议:提供用户之间的不可靠无连接的报文传输服务

        网络层

        IP(网络协议):提供网络结点之间的报文传送服务

        ARP(地址解析协议):实现IP地址向物理地址的映射

        RARP(逆地址解析协议):实现物理地址向IP地址的映射

        ICMP(网络控制报文协议):探测并报告IP数据报传输中产生的各种错误

        IGMP(网际组管理协议):管理多播组测成员关系

TCP和UDP

TCP

        简介 

        传输控制协议(TCP):定义了两台PC之间进行可靠的传输而交换的数据和确认信息的格式,以及计算机为了确保数据的正确到达而采取的措施。规定了TCP软件怎样识别给定计算机上的多个目的进程如何对分组重复这类差错进行恢复。还规定了两台计算机如何初始化一个TCP数据流传输以及如何结束这一传输。TCP最大的特点:提供面向连接、可靠的字节流服务。

        三次握手

                         

        SYN(同步)=1:表示这是一个连接请求或连接接受报文段。

        ACK(确认)=1:确认号生效,ACK=0确认号失效。

        seq(序号):本报文段所发送的数据的第一个字节的序号。

        ack(确认号):期望收到对方下一个报文段的第一个数据字节的序号。

        RST(复位):=1时表示释放当前连接,重新建立连接。还用来拒绝一个非法的报文段或拒绝打开一个连接。

        握手之前:B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求,服务器进程就处于LISTEN(收听)状态。A的客户端进程也是首先创建传输控制块TCB。

        第一次握手:A向B发出连接请求报文段,这时首部中的同步位SYN=1,同时选择一个初始序号seq=x。TCP规定,SYN报文段(即SYN=1的报文段)不能携带数据,但要消耗掉一个序号。这时,TCP客户进程进入SYN-SENT(同步已发送)状态。

        第二次握手:B收到连接请求报文段后,如果同意建立连接,则向A发送确认。在报文段中应把SYN位和ACK位都置为1,确认号是ack=x+1,同时也为自己选择一个初始序号seq=y。这个报文段也不能携带数据,但同样要消耗掉一个序号。这时TCP服务器进程进入SYN-RCVD(同步收到)状态。

        第三次握手:TCP客户进程收到B的确认后,还要向B给出确认。确认报文段的ACK置1,确认号ack=y+1,而自己的序号seq=x+1。TCP标准规定,ACK报文段可以携带数据。但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍是seq=x+1。这时,TCP连接已经建立,A进入ESTABLISHED(已建立连接)状态。当B收到A的确认后,也进入ESTABLISHED(已建立连接)状态。

        半连接:收到SYN包而还未收到ACK包时的连接状态称为半连接,即尚未完全完成三次握手的TCP连接。

        半连接队列:在三次握手协议中,服务器维护一个半连接队列,该队列为每个客户端的SYN包(SYN=i )开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于SYN_ RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

        Backlog参数:表示半连接队列的最大容纳数目。

        SYN-ACK重传次数:服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息、从半连接队列中删除。注意,每次重传等待的时间不一定相同。

        半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

        四次挥手

                 

        FIN(终止):释放连接

        第一次挥手:A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭
TCP连接。A把连接释放报文段首部的终止控制位FIN置1,其序号seq=u,它等于前面已传送过的数据的最后一个字节的序号加1。 这时A进入FIN-WAIT-1 (终止等待1)状态,等待B的确认。请注意,TCP规定,FIN报文段即使不携带数据,它也消耗掉一个序号。

        第二次挥手:B收到连接释放报文段后即发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,等于B前面已传送过的数据的最后一个字节的序号加1。然后B就进入CLOSE-WAIT(关闭等待)状态。
        第三次挥手:若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接。这时B发出的连接释放报文段必须使FIN= 1。现假定B的序号为w(在半关闭状态B可能又发送了一些数据)。B还必须重复上次已发送过的确认号ack=u+ 1。这时B就进入LASTACK (最后确认)状态,等待A的确认。
        第四次挥手:A在收到B的连接释放报文段后,必须对此发出确认。在确认报文段中把ACK置1,确认号ack=w+ 1,而自己的序号是seq=u+ 1 (根据TCP标准,前面发送过的FIN报文段要消耗一个序号)。然后进入到TIME-WAIT (时间等待)状态。

        挥手后:请注意,现在TCP连接环没有释放掉。必须经过时间等待计时器(TIME WAIT timer)设置的时间2MSI后,A才进入到CLOSED状态。时间MSL叫做最长报文段寿命(Maximum Segment Lifetime), RFC 793建议设为2分钟。但这完全是从工程上来考虑的,对于现在的网络,MSL = 2分钟可能太长了一些。因此TCP允许不同的实现可根据具体情况使用更小的MSL值。因此,从A进入到TIME-WAIT状态后,要经过4分钟才能进入到CLOSED状态,才能开始建立下一个新的连接。当A撤销相应的传输控制块TCB后,就结束了这次的TCP连接。

UDP

        简介

        用户数据报协议(UDP):是一个简单的面向数据报的传输层协议。提供的是非面向连接的、不可靠的数据流传输。UDP不提供可靠性,也不提供报文到达确认、排序以及流量控制等功能。它只是把应用程序传给IP层数据报发送出去,但是并不能保证它们能到达目的地。因此报文可能会丢失、重复以及乱序等。但由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

 TCP和UDP的区别

TCP

UDP

是否连接

面向连接

无连接

传输可靠性

可靠的

不可靠的

应用场景

传输少量数据

大量数据

速度

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/F2444790591/article/details/125291360

智能推荐

Corel VideoStudio(会声会影2023) V26.0.0.136 官方破解版_会声会影 2023 v 26.1.0.268整合盘-程序员宅基地

文章浏览阅读913次,点赞20次,收藏9次。会声会影(Corel VideoStudio)为加拿大Corel公司发布的一款功能丰富的视频编辑软件。会声会影2023简单易用,具有史无前例的强大功能,拖放式标题、转场、覆叠和滤镜,色彩分级、动态分屏视频和新增强的遮罩创建器,超越基本编辑,实现影院级效果。优化分屏剪辑功能,简化多时间轴编辑的工作流程,让创作更轻松。添加趣味性3D标题,内置NewBlueFX和proDAD转场和防抖插件,一键防抖和校准色彩。使用MultiCam Capture Lite可以轻松录制并编辑视频教程、产品演示、游戏视频、在线课程。_会声会影 2023 v 26.1.0.268整合盘

Adobe(Pr & Ae)动态图形模板-程序员宅基地

文章浏览阅读1.5k次。动态图形模板 Motion Graphics Templates是一种可在 Pr 或者 Ae 中创建的文件类型 (.mogrt), 以供将来重复使用或合作共享。.mogrt 文件格式可以让使用 Ae 的动画设计人员保持对作品风格的控制,同时还可以让使用 Pr 的编辑人员能够在编辑项目上下文中自定义运动图形。◆◆◆在Ae中创建动态图形模板动态图形模板可以在 Ae 或 Pr 的基本图形面板..._通过工作区域创建受保护区域

项目版本号管理说明-程序员宅基地

文章浏览阅读3.5k次。软件版本简介Alpha(α)Beta(β)RC(Release Candidate)StableGA(General Availability)简介在使用jar包的时候经常看到一些特殊版本,例如这次log4j的JNDI注入漏洞,发布的版本log4j-2.15.0-rc2这个rc2代表什么呢?Alpha(α)预览版,也叫内部测试版,一般不向外部发布,会有很多Bug,主要是内部人员用于测试。很多开源软件的大版本也会释放出来,让大家一起来找茬。例如:<dependency> _项目版本号管理

[发送AT指令配置a7670C模块上网]-程序员宅基地

文章浏览阅读2k次。2.1 如果内核配置和代码修改正确,设备启动后,ifconfig -a可以看到usb0节点。1.1按照芯片data sheet修改kernel代码,添加PID和VID。概要:基于rv1126平台调试SIMCOM 7670C 4G模块。1.2.3,使能USB network,配置rndis host。发送如下指令,如果看到回复OK,就证明4G模块与主控通讯正常。此处根据不同的芯片按照其datasheet进行修改。2.2 用AT指令测试4G模块与主控是否通讯正常。1,内核配置及内核代码修改。_a7670c

qiime安装_qiime1安装包下载-程序员宅基地

文章浏览阅读1.5k次。参考网址:https://forum.qiime2.org/t/qiime2-chinese-manual/838http://qiime.org/install/install.html 安装好qiime后,脚本的运行必须在qiime环境下输入:source activate qiime1 ..._qiime1安装包下载

全网首发 | Mac版 PS2022 终于来了,支持M1芯片,五大新黑科技_ps2022macair能使用吗-程序员宅基地

文章浏览阅读850次。相信win系统的小伙伴都用了几个月的Photoshop 2022版了吧!但Mac端的学习版一直没来,很多Mac用户都直接转正版去了!用Mac的小伙伴应该都在担忧adobe 2022 国外大神还破解不,毕竟win端都已经用了好几个月了,不过该来的还是会来的。昨日,国外大神终于就带来了Mac版Photoshop 2022,现在使用Mac的小伙伴也可以一直体验了。Mac版Photoshop 2022Photoshop 2022这款神级软件可谓是人尽皆知了 ,相信大家都不陌生,是图像..._ps2022macair能使用吗

随便推点

EtherCAT学习之路——概述_ethercat demo-程序员宅基地

文章浏览阅读1.1w次,点赞54次,收藏275次。首发于知乎最近在做基于EtherCAT的项目,看了一些网上的博客,感觉写的都比较松散。虽然,自己也是才开始学习,希望能把这段时间学到的东西总结一下。1.EtherCAT简介EtherCAT是由德国BECKHOFF自动化公司于2003年提出的实时工业以太网技术。它具有高速和高数据有效率的特点,支持多种设备连接拓扑结构。其从站节点使用专用的控制芯片,主站使用标准的以太网控制器。Et..._ethercat demo

QT简介及QT环境搭建-程序员宅基地

文章浏览阅读2k次。QT简介及QT环境搭建文章目录QT简介及QT环境搭建一、QT简介1. 什么是QT?2. QT的发展史3. QT支持的平台4. QT的优点5. QT开发工具二、QT环境搭建(CentOS7)一、QT简介1. 什么是QT?Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架 它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向..._qt环境

win10 设置任务栏时钟显示到秒_win10任务栏显示秒数-程序员宅基地

文章浏览阅读188次。win10 设置任务栏时钟显示到秒_win10任务栏显示秒数

.NET系统框架-程序员宅基地

文章浏览阅读124次。本书是一本讲解.NET技术的书籍,目标读者群也是在.NET框架(.NET Framework)下进行开发的程序员,因此我们无法回避的问题就是:什么是.NET框架?它包含了哪些内容?为开发程序提供了哪些支持?很多朋友对这类个问题的第一反应可能是.NET框架所提供的庞大类库及编写代码所采用的C#语言,实际上远不止这些。要描述.NET框架,自然会遇到与其相关的一系列专业的技术术语和缩写,相信大家已经..._目标框架 目标操作系统版本

基于单链表、环形队列(并发有锁)的多线程生产者消费者模型_并发环状加锁-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏11次。在这之前的我已经介绍过生产者消费者模型,不懂的可以下跳地址: http://blog.csdn.net/quinn0918/article/details/728259921、环形缓冲区缓冲区的好处,就是空间换时间和协调快慢线程。缓冲区可以用很多设计法,这里说一下环形缓冲区的几种设计方案,可以看成是几种环形缓冲区的模式。设计环形缓冲区涉及到几个点,一是超出缓冲区大小的的索引如何处理,二是如何表示缓_并发环状加锁

别光看世界杯 7月还有一场音视频技术盛宴等着你-程序员宅基地

文章浏览阅读226次。在全世界球迷的瞩目下,2018世界杯在上周激情上演,相信接下来的一个月时间里无数球迷又将守在电视前为自己喜欢的球队摇旗呐喊。当然,在移动互联网发达的今天,即使不在电视前,..._移动咪咕 张云天