传输层协议
TCP
TCP是面向连接的、可靠的进程到进程通信的协议
TCP提供全双工服务,及数据可以在同一时间双向传输
TCP报文段
TCP将若干和字节构成的一个分组,叫报文段
TCP报文段封装在IP数据报中
TCP头部格式
![](https://img-blog.csdnimg.cn/img_convert/8034bed47f2543bbfa45c573ee20cfdb.png)
端口:运输层与应用层的服务接口
序号:发送端每个字节进行编号,方便接收端重组
确认号:用于确认发送端的信息
首部长度:确定首部数据结构的字节长度,20-60字节
保留:目前未被使用,用于今后扩展
窗口大小:用于控制本地可接受数据段的数目,此大小可变化,流量控制机制就是依靠此属性的大小实现的
紧急比特URG:当URG=1时,告诉系统此报文字段中有紧急数据,应尽快发送
确认比特ACK:只有当ACK=1时确认号才有效,当ACK=0确认号则无效,用于确认对方发送的数据
推送比特PSH:接受TCP收到推送比特置1的报文段,就尽快的交付给接受应用进程,而不是再等整个缓存填满后再向上交付
复位比特RST:当RST=1时,表明TCP连接中出现严重差错(如主机崩溃或其他原因),必须释放连接,在重新建立连接
同步比特SYN:同步比特SYN置为1时,表示这是一个连接请求或者连接接收报文
终止比特FIN:用来释放一个连接,当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放连接
校验和:检验和字段检验的范围包括首部和数据
紧急指针:指出在本报文段中的紧急数据的最后一个直接的序号
选项:长度可变,TCP只规定了一种选择,即最大报文段长度
TCP端口号
用于区分不同的网络服务
![](https://img-blog.csdnimg.cn/img_convert/0f87c3ab781b4741fe901eeb0dbac307.png)
TCP三次握手
![](https://img-blog.csdnimg.cn/img_convert/524ffeb939a2916c1f7191212017827b.png)
通俗易懂简单概述TCP三次握手过程。
第一次握手:建立连接时,客户端发送syn包到服务器表示需要连接服务器;
第二次握手:服务器收到syn包,通过回应ack确认客户端连接,同时自己也发送一个SYN包表示要与客户端建立连接;
第三次握手:客户端收到服务器的SYN+ACK包后再向服务器发送确认包ACK以确认服务器发送的SYN,到此TCP三次握手建立成功。
TCP四次挥手
![](https://img-blog.csdnimg.cn/img_convert/57551dd889752c4018f013c2377b4339.png)
UDP
![](https://img-blog.csdnimg.cn/img_convert/3ed4ea44023e03df9405b8114d47d6cc.png)
UDP常用端口号
![](https://img-blog.csdnimg.cn/img_convert/7f3863bf599c501ad8f202382800fa9b.png)
UDP传输过程
使用UDP传输数据时,由应用程序根据需要提供报文到达确认、排序、流量控制等功能。
UDP不提供重传机制,占用资源小,处理效率高
一些时延敏感的流量,如语言、视频等,通常用UDP作为传输协议