一、概述
传输层为不同主机上的应用进程提供逻辑通信功能。
在发送端,传输层将从应用进程接收到的报文转换为传输层分组,并传递给网络层进行进一步的封装。传输层提供的服务受限制于底层网络协议的服务模型,IP协议是不可靠服务。
1.1 多路复用与多路分解
将两个端系统间IP的交付服务扩展为运行在端系统上的两个进程之间的交付,这种主机间的交付扩展为进程间的交付也就是多路复用以及多路分解。
多路分解:在接收端,传输层从网络层接收报文段,并将报文段中的数据交付给主机上运行的适当应用程序进程,也就是中间的套接字。每个套接字都有唯一的标识符(端口号)。
多路复用:在发送端,从不同的套接字中收集数据块,并为每个数据块封装首部信息生成报文段,并将报文段传递到网络层。
要求:1、套接字有唯一标识符;2、报文段有特殊字段指示该报文段所要交付的套接字,报文段中有源端口号,还有目的端口号。
端口号:0~65535
周知端口号0~1023:HTTP:80;FTP:21等
1.2 UDP
1、一个UDP套接字由一个二元组表示,目的IP地址+目的端口号
2、
UDP报文段结构
UDP 的检验和提供了差错检测能力,确定UDP报文从源到达目的地移动时,其中的比特是否发生改变,但UDP对差错恢复无能为力。
2、UDP的特点
- 对于应用层何时、发送什么数据控制的更加精细
- 无需建立连接
- 无连接状态
- 分组首部开销小
DNS就是使用UDP协议作为传输层协议
1.3 TCP
1、一个TCP套接字由一个四元组表示,源IP地址+源端口号+目的IP地址+目的端口号
2、TCP的特点
- 面向连接
- 全双工服务
- 点对点
- 发送的数据被引导到该连接的发送缓存里
TCP发送缓存和接受缓存
3、TCP报文段
序列号与确认序列号是保证tcp可靠传输的关键,序列号是对该报文段数据的编号,确认号是期望对方发送的下一个数据段的序列号
4、tcp的三次握手与四次分手
名词解释:
- SYN:代表请求创建连接
- FIN:表示请求关闭连接
- ACK:代表确认接受
- seq:序列号
- ack:这个代表下一个数据包的编号
TCP三次握手
1)客户端首先要SYN=1,表示要创建连接,
2)服务端接收到后,要告诉客户端:我接受到了!所以加个ACK=1,就变成了ACK=1,SYN=1
3)理论上这时就创建连接成功了,但是要防止一个意外(见疑问三),所以客户端要再发一个消息给服务端确认一下,这时只需要ACK=1就行了。
三次握手完成!
TCP四次分手
1)首先客户端请求关闭客户端到服务端方向的连接,这时客户端就要发送一个FIN=1,表示要关闭一个方向的连接(见上面四次分手的图)
2)服务端接收到后是需要确认一下的,所以返回了一个ACK=1
3)这时只关闭了一个方向,另一个方向也需要关闭,所以服务端也向客户端发了一个FIN=1 ACK=1
4)客户端接收到后发送ACK=1,表示接受成功
四次分手完成!