传输层

传输层提供的功能

1.传输层是位于网络层之上,它为运行在不同主机上的进程之间提供逻辑通信(即端到端通信),而网络层提供主机之间的逻辑通信

2.传输层与应用层是主机才有的层次;为应用层提供服务;使用网络层的服务

3.传输层提供复用和分用功能:复用是指发送方不同应用进程都可使用同一个传输层协议发送数据;分用是指接收方的传输层在剥去报文的首部后(根据目的端口号)能够把这些数据正确交付给目的应用进程。好比生活中寄信,四个人将信放在同一个邮箱中(就是复用),当他们收到回信,将每封信送到对应的每个人手上(就是分用)

4.传输层还要对收到的报文进行差错检测(首部和数据部分)。而网络层只检查IP数据报的首部,不检查数据部分

5.提供两种不同的传输协议,即TCP(可靠,面向连接)UDP(不可靠,无连接)

传输层的端口

1.端口的作用:是传输层的服务访问点(TSAP),它在传输层的作用类似于IP地址在网络层和MAC地址在数据链路层的作用。

2.端口号只有本地意义,在因特网中不同计算机的端口是没有联系的。

3.套接字:在网络中通过IP地址来标识和区别不同的主机,通过端口号来标识和区分一台主机中不同的应用进程。
Socket套接字={主机IP地址,端口号}
套接字唯一标识了一个网络的主机和它上面的一个进程

UDP协议

1.概述:在IP数据报服务之上增加了两个基本服务:复用和分用以及差错检测

2.特点:
1>UDP是无连接,减少开销和发送数据的时延
2>UDP使用最大努力交付,即不保证可靠交付
3>UDP是面向报文的,适合一次性传输少量数据的网络应用(DNS、SNMP)
4>UDP无拥塞控制,适合很多实时应用

3.UDP首部格式:

16位源端口号 16位目的端口号
16位UDP长度 16位UDP校验和
  • 源端口。在需要对方回信时选用,不需要时可用全0
  • 目的端口。这在终点交付报文时必须用到
  • UDP长度。UDP数据报的长度(包括首部和数据),最小值是8(仅有首部)
  • 校验和。检测UDP数据报在传输中是否有错。有错则丢弃。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0。

UDP校验

伪首部:只有在计算校验和时才出现,不向下传送也不向上递交

过程:
在发送端

  1. 填上伪首部
  2. 全0填充检验和字段
  3. 全0填充数据部分
  4. 伪首部+首部+数据部分采用二进制反码求和
  5. 把和求反码填入校验和字段
  6. 去掉伪首部发送

在接收端:

  • 填上伪首部
  • 伪首部+首部+数据部分采用二进制反码求和
  • 结果为1则无差错,为0则丢弃

TCP协议

1.TCP协议的特点

  • TCP是面向连接的传输层协议
  • 每条TCP连接只能有两个端点,每条TCP连接只能是点对点的(一对一)
  • TCP提供可靠的交付服务,保证传送的数据无差错,不丢失,不重复且有序(可靠有序不丢补重
  • TCP提供全双工通信,TCP连接的两端都设有发送缓存和接收缓存。发送缓存用来存放以下数据:1>发送应用程序传送给发送方TCP准备发送的数据 2>TCP已发送但尚未收到确认的数据;接收缓存用来暂时存放以下数据:1>按序到达但尚未被接收应用程序读取的数据2>不按序到达的数据
  • TCP是面向字节流的,TCP把应用程序交下来的数据仅视为一连串无结构的字符流

2.TCP报文段
TCP报文段首部最短为20B,后面有4N字节时根据需要而增加选项,通常长度为4B的整数倍
计算机网络-传输层

  • 源端口和目的端口:各占2B。
  • 序号字段:占4B。TCP是面向字节流的,所以TCP连接传送的数据流中的每个字节都要编上序号。序号字段的值指的是本报文段所发送的第一个字节的序号
  • 确认号:占4B,是期望收到对方的下一个报文段的数据的第一个字节的序号。若确认号是N,则表明到序号N-1为止的所有数据都已正确收到
  • 数据偏移(即首部长度)。占4位,指TCP报文段的数据起始处距离TCP报文段的起始处有多远;数据偏移的单位是32位(4B)。因此当此字段值为15时,达到TCP首部最大长度60B.
  • 保留字段。占6位。保留以后使用
  • 紧急位URG:URG=1时,表明紧急指针字段有些。它告诉系统报文段中有紧急数据,应尽快传送(相当于高优先级数据)。URG和紧急指针配套使用,即数据从第一个字节到紧急指针所指字节就是紧急数据
  • 确认位ACK:只有ACK=1时确认字段号才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置为1
  • 推送位PSH:接收TCP收到PSH=1的报文段,就尽快地交付给接收应用进程,而不再等整个缓存都填满再向上交付。
  • 复位位RST:RST=1时,表明TCP连接中出现严重的差错,必须释放连接
  • 同步位SYN:同步SYN=1表示这是一个连接请求或连接接收报文。当SYN=1,ACK=0时,表明这是一个连接请求报文,对方若同意建立连接,则响应报文中使用SYN=1,ACK=1。即SYN=1表示这是一个连接请求或连接接收报文。
  • 终止位FIN:用来释放一个连接。FIN=1表明此报文段的发送方的数据已发送完毕,并要求释放连接。
  • 窗口字段:占2B。指运许对方发送的数据量,单位是字节。例如,设确认号是701,窗口字段是1000。这表明,从701号算起,发送此报文段的一方还有接收1000B数据(字节序号为701-1700)的缓存空间
  • 校验和:占2B。校验首部和数据部分。与UDP一样,在TCP报文段前加12B伪首部(不同的是伪首部第四个字段的协议字段的17改为6)
  • 紧急指针字段:占16位。指出在本报文段中紧急数据共有多少字节(将紧急数据放在本报文段数据最前面)
  • 选项字段:长度可变。
  • 填充字段:为了使整个首部长度是4B整数倍。

TCP连接管理

1.TCP是面向连接的协议,因此每个TCP连接都有三个阶段:连接建立,数据传送和连接释放
在TCP建立连接过程中,要解决以下三个问题:

  • 要使每一方都能够确知对方的存在
  • 要允许双方协商一些参数
  • 能够对运输实体资源进行分配

每条TCP连接有两个端点,TCP连接的端口称为套接字或插口。端口拼接IP地址就构成套接字。每条TCP连接唯一地被通信两端的两个端点(即两个套接字)确定。

2.TCP连接的建立采用客户/服务器方式。主动发起连接建立的应用进程是客户机,而被动等待连接建立的应用进程是服务器。

相关文章: