关于TCP协议 多路分用/复用

Http Socket 2018-05-27

实习面试中经常被问到这个知识点,有必要补一下。

一个IP地址和一个端口号也称为一个socket,socket是应用层和传输层之间的一个门

在传输层:

在 TCP / IP 协议族中有两个互不相同的传输协议: TCP(传输控制协议)和 UDP(用户数据报协议).

一般不按下面的分层,而是这四层

  • 应用层,
  • 传输层,
  • 网络层,
  • 链路层

TCP数据被封装在一个IP数据报中

理解传输层服务的基本理论和基本机制:

  • 多路复用/分用
  • 可靠数据传输机制
  • 流量控制机制
  • 拥塞控制机制

传输层和网络层的不同点

  • 传输层是为不同应用之间提供的逻辑通信机制。
  • 网络层是为不同主机之间提供的逻辑通信机制。

这里的逻辑,指的是不分空间,物理路径的。通过某种机制就好像连在一起

主要掌握传输层的以下概念:

  • UDP:无连接传输服务
  • TCP:面向链接的传输服务
  • TCP拥塞控制

工作大概的方式:

发送方:将应用递交的消息分成一个或者多个segment,并向下传给网络层。
接收方:将接收到的segment组装成消息,并向上交给应用层

TCP是一种可靠的服务,主要有以下三点:

  • 拥塞控制
  • 流量控制
  • 链接建立


可见UDP只是实现了传输层必要的服务即多路分用,多路复用


多路复用多路分用(传输层的一个必要功能)

多路分用:是指在接收端,有多个网络进程,

因为一台主机上有多个应用进程,因此传输层必须进行多路复用多路分用

当p3给p1发送报文,p4给p2发送报文的时候,主机2的传输层就必须进行多路分用,把报文段正确的交给不同的进程,不能错,这就交多路分用。通过头部信息,可以知道该发到哪个进程。

多路复用

发送端发送的时候,而网络层只有一个。首先从多个socket(可以认为是应用层)接受数据,然后再交给网络层之前要做一件事情:为每个数据封装上正确的头部信息,从而产生正确的报文段(segment),再交给网络层

多路分用工作的基本原理:

主机接收到IP数据报

  • 每个数据包携带源IP地址,目的IP地址。
  • 每个数据包携带一个传输层的段(segment)。
  • 每个段携带源端口号和目的端口号

TCP/UDP段的格式如下:

主机收到Segment之后,传输层协议提取IP地址和端口号信息,将Segment导向相应的Socket。(TCP会做更多处理)

可见网络层是不关心端口号信息的。

面向链接的多路分用


UDP使用二元组(目的ip地址,目的端口号)

一个TCP链接的例子(TCP是一对一的,一个客户进程对应一个服务进程,):


本文由 方方無 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论

shijiebei 365bet manbetx 188bet xinshui caipiao 95zz tongbaoyule beplay 88bifa 18luck betway bwin hg0088 aomenjinshayulecheng ca88 shenbotaiyangcheng vwin w88 weide