1. TCP/IP传输层的作用
1、定义:为主机:提供端到端的连接;为网络层:提供TCP和UDP服务;
2、作用:
提供面向连接或无连接的服务;
维护连接状态;
对应用层数据进行分段和封装;
实现多路复用;
可靠地传输数据;
3、TCP和UDP的区别
TCP(Transmission Control Protocol):面向连接;"流式传输"
UDP(User Datagram Protocol):无连接,不可靠;
对方在吗?对方收到了吗?对方收到的信息正确的吗?
2. TCP基本原理
2.1. TCP头格式
Source Port | Destination Port
源端口、目的端口;
端口:每个应用程序进出网络都需要经过一个唯一端口,通过端口来识别数据交由哪个应用程序处理;
服务端:固定端口号0~1023;客户端:1024以上随机端口;
命令:netstat -a
Sequence Number | Acknowledgement Number
Sequence Number 序列号
Acknowledgement Number 确认号
Data Offset | Reserved
Data Offset(数据偏移):标识数据分段在完整数据中的位置,进行数据重组;
Reserved(保留位):闲置;
Flags 标志位
URG(紧急指针字段标志):紧急开关位,优先转发;(紧急指针)
ACK(确认字段标志):标识字节流;
PSH(推功能):直接提交缓存数据,在缓存区中立即结束上传给应用层;
RST(重置连接):无法正常连接,死机、断线;
SYN(协商位、同步序列号):确认号;
FIN(数据传送完毕):标识结束—四次挥手;
Window
窗口尺寸:滑动机制,用来通告本机的接收能力;
问题:丢包重传
Checksum | Options | Padding
Checksum:Hash校验
2.2. TCP的三次握手
1、工作机制
seq:序列号,随机产生;
ack:确认号;
① 主机A向主机B发送请求,第一个数据包,产生一个seq:a;(无ack)
② 主机B回应主机A,a. 确认收到,产生一个ack:a+1;b. 产生一个seq;
③ 主机A回应主机B,对该确认再做确,再产生序列号;ack:a+1; seq:b+1;
④ 主机B收到主机A的确认报文后,连接建立;
例子:两个人打招呼;
2、确认重传机制
若数据包检测有错误,利用确认号,让对方再发一次
3、现实应用场景
TCP不要求对每个段一对一地发送确认,接收端可以用一个ACK确认之前收到的所有数据。
2.3. TCP的四次挥手
FIN(Finish Segment):结束段;
工作机制
① 主机A向主机B发送FIN,请求结束
② 主机B向主机A回应: a. ACK确认收到请求,b. FIN请求结束
③ 主机A向主机B回应ACK,确认结束
2.4. TCP的窗口滑动机制
目的:实现流量控制;
工作机制:使用大小可变的滑动窗口,定义窗口尺寸的通告;
3. UDP基本原理
1、功能:实现数据报模型的分组交换计算机网络通信而设计的;无连接、不可靠;
2、UDP的头格式
4. TCP和UDP的比较
1、TCP:
优点:传输可靠性高;
缺点:占用带宽高,传输延迟高;
应用场景:对数据完整性要求高,但对传输延迟要求低;
2、UDP:
优点:占用带宽低,传输延迟低;
缺点:没有任何可靠机制;
应用场景:对传输延迟要求高,但数据完整性要求低