ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

学习重点——TCP的三次握手和四次挥手

2021-12-11 17:03:38  阅读:279  来源: 互联网

标签:发送 UDP 16 握手 TCP --- 四次 数据包


第四天

对第三天的5条TCP和UDO的不同的讲解

例子引入——扔球游戏

A扔向B,球上写着  我—5   爱—6  你— 7

B接球

1、TCP协议是面向连接的协议,而UDP协议是无连接的协议;

2、TCP协议的传输是可靠的,而UDP协议的传输“尽力而为”;

3、TCP协议可以实现流控,而UDP不行;

4、TCP协议可以实现分段,而UDP不行;

5、TCP传输速度较慢,占用资源较大;UDP传输速度较快,占用资源小;

扔球游戏 ——  面向连接 ——设备在正式传输数据之前,先使用预备的协议建立点到点的连接,之后再传输数据。

TCP头部 —— 可变长头部

 首部长度(4位)(根据有无选项增长或减少头部)——指数据前六行——先看首部长度里有无选项长度,若有,首部长度则为数据前六行长度之和,若没有,则为选项前五行之和。

TCP头部最短长度(没有选项)——(16+16+32+32+4+6+6+16+16+16)/8=20

保留(6位)——暂时不用管,6位为0。

URG —— 紧急标记位
ACK —— 确认标记位
PSH —— PSH标记位
RST —— 强制断开标记位
SYN —— 请求标记位
FIN —— 结束标记位  

封装图

传输层的校验是伪头部校验

伪头部校验——除了校验本层头部及数据部分内容外, 还会将网络层的部分数据一起进行校验 --- 12字节 --- 32源IP地址,32目标IP地址,8位保留,8位协议号,16位总长度(数据内容加头部) --- 反码相加法  (32+32+8+8+16)/8=12

UDP头部

 16位UDP长度 —— 头部加数据的长度 —— 图里三排总长度 —— 因为UDP没有“选项”长度

UDP固定8个字节——(16+16+16+16)/8=8

TCP的三次握手

第一次握手--- A先向B发送SYN请求包(SYN=1)。

第二次握手--- B收到包后,向A回一个ACK确认包(ACK=1),此时,A到B 的会话已建立,要建立B到A的会话,在B发送给A的ACK确认包时,同时发送一个SYN请求包,请求建立B到A的会话。

第三次握手 --- A收到后给B发送ACK确认包,建立了B到A的会话,此时,TCP的双向会话建立好了。

加序号第一次握手 --- 在A发送给B的第一个SYN包时,发送一个seq序号(seq=x,x为A中的随机一个数)。

              第二次握手 --- B收到后发送ACKnumber——ACKno确认序号(ACKno=x+1,表示我已经收到x,请求发送x+1),同时发送B本身的seq序号包(seq=y,y为B中的一个随机数)。

              第三次握手 --- A收到后,发送ACKno确认序号(ACKno=y+1,表示我已收到y请求发送y+1),并发送此时A的seq序号包(seq=x+1)。

 

TCP的四次挥手

 第一次挥手 --- A数据已经发完,此时A向B发送FIN请求包(FIN=1)请求结束会话断开连接。

 第二次挥手 --- B收到后发送ACK确认包(ACK=1),断开A到B的会话连接。

 第三次挥手 --- 此时B到A的会话连接没有断开,所以B向A发送FIN请求包。

第四次挥手 --- A收到后,A发送ACK确认包,此时B到A的会话连接断开。到此,A与B的所有连接断开。

 为什么在四次挥手断开会话时,B要给A发送两个数据包?

因为在挥手时牵扯到了数据的传输,而握手的时候没有,所以当A发送FIN包时,表示A的数据已经发完,但是B的数据并没有发完,所以在B的数据发完后才发FIN包,所以是四次挥手。

可不可能是三次挥手?

可能,取决于数据的大小。

TCP协议保证传输可靠性的机制 --- 确认,重传,排序,流控

滑动窗口机制 --- 窗口值win --- seq=1,win=5 --- 表示A向B发送5个数据包,而B只需要确认一次,B发送确认包ACKno=6,win=5(表示我已接收5个数据包,请发送6),下一次,A会向B发送6个数据包seq=1,win=6。要是B还能够处理,则发送确认包,然后A继续增加发送包的数量;如果B不能处理,最多处理5个数据包,则B发送ACK=1,ACKno=6,win=5(表示我只接收了6个数据包,请发送6,A下次从6开始发送,重传)。为了确保发送效率最大。

 网络层封装 --- IP地址 --- IP协议

最少20个字节

8位生成时间(TTL)---数据包每经过一次路由器的转发,TTL值将会减一,当一个数据包中的TTL值为0是,路由器将不再转发该数据包,而是直接把他丢弃。

协议号:

TCP --- 6

UDP --- 17

ICMP --- 1

二层上传数据大小:

MTU --- 最大传输单元 --- 1500字节 --- 网络层到应用层总和不超过1500字节

传输层分段的限制:

MSS --- 最大段长度 --- 1460字节 --- 这个值需要在TCP连接的三次握手中前两次SYN包中进行协商,如果双方携带的MSS值不同,则以小的为准。

标签:发送,UDP,16,握手,TCP,---,四次,数据包
来源: https://blog.csdn.net/qq_39744805/article/details/121873646

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有