目录
TCP 的连接:TCP 连接的端点叫做套接字(socket)或插口。套接字 socket = (IP地址: 端口号)
序号 :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。
数据偏移 :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。
确认 ACK :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。
同步 SYN :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。
终止 FIN :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放连接。
窗口 :窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。
1.运输层定义
运输层也叫传输层,运输层协议又称为端到端协议( 作用范围为应用进程到应用进程,也称为端到端 )。运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
2.运输层的两个主要协议
- 用户数据报协议 UDP(User Datagram Protocol)。UDP 传送的数据单位协议是 UDP 报文或用户数据报。
- 特点:用户数据报协议 UDP(User Datagram Protocol)是无连接的,尽最大可能交付,无拥塞控制,面向报文(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信。
- 传输控制协议 TCP(Transmission Control Protocol)。TCP 传送的数据单位协议是 TCP 报文段(segment)
- 特点:TCP协议是面向连接的,提供可靠交付,有流量控制,拥塞控制,提供全双工通信,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点的(一对一)。
TCP 的连接:TCP 连接的端点叫做套接字(socket)或插口。套接字 socket = (IP地址: 端口号)
3.运输层功能
- 实现进程间的逻辑通信(而网络层实现的是主机之间的逻辑通信)
- 差错检测
- 多路复用/分解
- 提供无连接/面向连接的服务
4.运输层多路复用
- 套接字:网络和进程间数据传递的门户,由进程持有,传输层$\xleftrightarrow{收到数据}$套接字$\xleftrightarrow{收到数据}$进程。
- 多路分解==(接收端)==:传输层检查报文某些字段→识别出接收套接字→将报文交付给正确套接字
- 多路复用==(发送端)==:从套接字处收集数据块→为每个数据块封装上首部(用于分解)→通过网络层发送
-
无连接的 有连接的 协议 UDP TCP 套接字格式 <目的IP><目的端口号>
<源IP><目的IP><源端口号><目的端口号>
只有套接字两项/四项完全相同时,报文才会被送到相同套接字。对于无连接的应用程序,自动分配端口号。
4.运输层基本工作过程
- 发送端应用层:应用进程将报文丢给传输层
- 发送端传输层:将应用层来的报文转化为传输层报文(切块+加上传输层首部),完成后丢给网络层
- 发送端网络层:封装成分组,发出去
- 接收端网络层:接收,并提取出传输层报文段,送给传输层
- 接收端传输层:处理收到报文,使得报文中的数据可供应用进程使用
- 接收端应用层:收到并使用数据