目录
0 引言
文章主要对TCP相关的知识点进行了总结,文中的图片均来自小林Coding《图解网络》小林coding
1 什么是传输层?
传输层位于应用层的下层,为应用程序提供端到端的逻辑通信。传输层有两个非常重要的作用——复用和分用。复用的意思是在应用层的角度来看,我们不同的应用程序都能够被封装成一定格式的传输层报文后进行传输;分用的意思是将我们的传输层报文头部去除后可以将数据传输给不同的应用进程。
2 传输层协议
传输层有两个非常重要的协议,分别是TCP协议(传输控制协议)和UDP协议(用户数据报协议)。二者的区别如下:
- TCP是面向连接的,UDP是没有连接的
- TCP只能进行一对一的通信,UDP可以实现一对一,一对多,多对多的通信
- TCP协议是可靠的,UDP协议是不可靠的
- TCP有流量控制和拥塞控制
- TCP会对传下来的报文进行拆分,UDP不会对报文进行拆分
- TCP(20字节)首部开销比UDP(8字节)大
TCP协议适用于需要可靠传输的场景
UDP协议适用于要求相应快的的场景
3 TCP连接的建立
连接建立的过程如下图所示
- 客户端发起建立连接的SYN报文,并初始化一个随机序列号seq=x,此时服务端处于listen状态,即监听连接的状态;之后客户端处于SYN_SENT状态
- 服务端在接受到客户端的SYN报文之后就会给客户端发送一个SYN+ACK报文,并初始化一个报文的序列号seq=y,同时确认序列号ack=