学习重点——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的三次握手和四次挥手

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 —— 结束标记位  

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

封装图

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

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

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

UDP头部

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

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

TCP的三次握手

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

学习重点——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的四次挥手

学习重点——TCP的三次握手和四次挥手学习重点——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开始发送,重传)。为了确保发送效率最大。

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

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

最少20个字节

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

协议号:

TCP --- 6

UDP --- 17

ICMP --- 1

二层上传数据大小:

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

传输层分段的限制:

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

上一篇:传输层概述


下一篇:基于OHCI的USB主机 —— OHCI(TD结构)