TCP/UDP与IP协议

目录

 

TCP/UDP

TCP和UDP的区别:

TCP和UDP的使用场景:

补充封装和解封装:

 传输层:

TCP建立连接的过程

TCP断开连接的过程

序列号

TCP的流控

IP协议

IP的分片和TCP的分段


 

TCP/UDP

ecfc19455d0f472a9fafaaec574fc319.png

 

TCP和UDP的区别:

1,TCP是面向链接的协议,而UDP是无连接的协议。
2,TCP协议的传输是可靠的,而UDP协议的传输“尽力而为”。
        补充:TCP的可靠性 --- 确认,重传,排序,流控
3,TCP协议可以实现流控(流量控制),而UDP不行。
4,TCP可以分段,而UDP不行。
5,TCP消耗资源较大,传输效率较低;UDP耗费资源较小,速度快。
 
补充:什么是面向链接?
在正式传输数据之前,先适用预先的协议,建立点到点的链接。
TCP建立的连接实际建立了一个双向的会话连接,即通讯双方都可以向对方发送数据。
 

TCP和UDP的使用场景:

TCP协议更适用于对可靠性要求较高,但是对传输效率和资源占用要求较低的场景;UDP更
适用于对传输效率要求较高,可靠性要求较低的场景(即时类通讯)。
 

补充封装和解封装:

 
63700959acbe417dbf19854dacd451c3.png

 传输层:

TCP头部(可变长)

9a687fdf35004a96912e4679e0247816.png

 

 第一行:源端口号和目标端口号。

第二行:用以标识数据段的序列号。

第三行:回应的数据包中用以请求想要的数据段的序列号。

第四行:首部长度表示整个TCP头部一共多长。(与选项段有关,若选项段为空,表示TCP头部的最短长度,为20个字节。)

补充:1个字节=8个比特位

保留:暂时没有用处。

6个标记位:每一个都代表一位二进制,为0表示未激活,为一表示激活。

 URG:置1时紧急指针将会激活,表示这个数据段里包含有需要紧急处理的数据,用来处理避免TCP数据流中断。

ACK:置1时表示数据段中的确认序列号激活,置0的时候表示数据段不包含确认信息,确认号被忽略。(起确认信息的作用。)

PSH:PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。(优先处理该数据段,不需要等到数据段组成数据包才进行传送。)

RST:用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。该标记为置1时,强制断开与对方的连接。

SYN:请求标记位,置1时表示该数据包表示请求与对方建立连接,形成会话。(对方回复ACK置1的数据包就表示同意连接。)

FIN:结束标记位,置1时表示请求与对方断开连接。(对方回复ACK置1的数据包就表示同意断开。)

补充:TCP协议可将大数据包分成若干小的数据段,进行分段传输。

窗口大小:

第五行:校验和:确保数据完整性 --- 反码相加法。
属于伪头部校验 --- 除了校验传输层头部和数据内容外,还会将网络层头部中的一部分内容一起进
行校验。
 

紧急指针:指向需要紧急处理的数据,URG置1时激活。

第六行:选项表示可选项。

第七行:数据表示上一层传输下来的数据。

UDP头部

cc453f4789b84bef9ac7add173d1bf92.png

 最短也是20个字节。

TCP建立连接的过程

TCP的三次握手

                                                                A与B建立连接

1、A先向B发送SYN置1的数据包(此时该数据包的序列号随机,设为X;确认序列号未激活。),表示请求建立A--->B的连接。

2、B向A回复ACK置1的数据包(确认序号为X+1,表示请求下一个数据包;序列号随机,设为Y。)表示同意建立,因为是建立双向会话,所以B回复的数据包中的SYN置1,表示B也请求建立B--->A的连接。

3、A向B回复ACK置1 的数据包(确认系列号为Y+1,表示请求下一个数据包;序列号为X+1),表示同意建立。

                                                                 双向会话建立完成

 

TCP断开连接的过程

TCP的四次挥手

                                                                A与B断开连接

1、A先向B发送FIN置1的数据包,表示想与B断开连接。

2、B向A回复ACK置1的数据包,表示同意断开A--->B的连接。但此时B对A的数据传输可能没有结束,所以B--->A的连接没有断开。

3、B向A发送FIN置1的数据包,表示想与A断开连接。

4、A向B回复ACK置1的数据包,表示同意断开连接。

                                                                断开连接完成

补充:断开连接的过程因为数据传输完成的时间可能不同,所以标准的断开过程是4次,但也可能是3次。

与传输数据的数据包不同,建立连接和断开连接的数据包只是功能型的数据包,即便没有双向会话也能进行传输。

 

TCP序列号

数据传输的过程中序列号其实是指向以字节为单位的数据。(按字节衡量)

例如:将一个1000个字节的数据包划分成三个数据段发送,第一个300字节,第二个400字节,第三个300字节。假如A先向B发送第一个数据段,序列号为X。B收到后回复A的确认数据包中的确认序列号就应该为X+300,表示B请求A发送序列号为X+300开始的下一个数据段。以此类推,A发送完第二个数据段,B回复的确认数据包中的确认序列号就应该为X+700。因为A的第三个数据段发完后就没有数据需要发送,所以A在发送第三个数据段时可以将FIN标志置1,以结束会话。

TCP的流控

在数据传输过程中,可以一次性发送多个数据包/段来实现流量控制。这一功能需要通过窗口大小来实现。

例如:A先一次性向B发送3个数据包,第一个数据包的序列号设为1,每个数据包假设只有一个字节,并把窗口值置为3。B回复A一个确认序号为4,窗口值为3的确认数据包。此时A会认为B可以同时处理3个数据包,为提高传输效率,A会加大窗口值。假如提升到5,则一次性发送5个数据包,此时B回复A一个确认序列号为9,窗口值为5的确认数据包。此时A继续向上试探,假如将窗口值提升到7,则一次性发送7个数据包。B如果此时只能处理5个数据包,B将会发送一个确认序列号为15,窗口值为5的确认数据包,表示B现在只能处理5个数据包并请求序列号为15开始的数据包。A再次发送时就会从序列号为15的数据包开始发,且只会发送5个数据包。此后A还会不断的向上试探,以提升传输效率。(B可能被其它的数据拉低了处理能力。)

IP协议---网络层

b49a86c71f0845e288d84defef8f8eeb.png

 第一行:

版本:表示使用的IP协议版本。(IPV4 - 4或者IPV6 - 6)

首部长度:表示IP头部长度。(可变长,与TCP类似,与选项有关。)

服务类型:标记特殊处理。

总长度:表示头部加数据的长度。(整个数据包的长度)

第二行:

标识:表示同一个数据包分片后的数据片的“身份证”。(即同一个数据包分片后产生的数据片的标识一定相同。)

标志:有三位,第一位保留(无意义),第二位置0表示进行了分片,置1表示没有进行分片。 第三位置0表示这个数据片是最后一片,置1表示后面还有分片。

片偏移: 此分片在原始数据的偏移,用于分片重组,因为13位,所以支持的最大字节为8192。

第三行:

TTL --- 生存时间 --- 数据包每经过一个路由器的转发,其数值减1,当一个数据包的TTL值为
0是,路由器将不再转发而直接丢弃。
 
协议号 --- 上层所适用的协议类型 --- TCP --- 6,UDP --- 17
 

首部检验和:确保数据完整性,只校验首部。

第四行:源IP地址。

第五行:目标IP地址。

第六行:选项表示可选项。

第七行:数据表示上一层传输下来的数据。

IP的分片和TCP的分段

TCP的分段:TCP协议可将大数据包分成若干小的数据段,进行分段传输。

IP的分片:将大的数据包分成若干小的数据片进行传输。

通过TCP协议传输的数据通常不会在网络层进行分片,因为在传输层就已经进行了分段。所以通过网络层进行分片的一般是通过UDP协议传输的数据。

MTU --- 最大传输单元 --- 默认值(可以修改)1500字节 --- 数据来到数据链路层的内容不能超过1500个字节
 
MSS --- 最大段长度 --- 理论值1460字节(1500字节-传输层的最小值20字节-网络层的最小值20字节。),这个值需要进行协商,这个参数在TCP的SYN包携带,如果双方不一致,则将按照小的执行。

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值