深入学习计算机网络-自顶向下方法-传输层(三)

前言:

理解传输层的工作原理,多路复用/解复用,可靠数据传输,流量控制,拥塞控制

学习Internet的传输层协议,UDP:无连接传输,TCP:面向连接的可靠传输,TCP的拥塞控制。

目录:

0X00概述和传输层服务

0X01多路复用和解复用

0X02无连接传输:UDP

0X00概述和传输层服务

传输服务和协议

流程图

为运行在不同主机上的应用进程提供逻辑通信

传输协议运行在端系统

  • 发送方:将应用层的报文分成报文段,然后传递给网络层
  • 接收方:将报文段重组成报文,然后传递给应用层

有多个传输层协议可供应用选择

  • Internet: TCP和UDP

应用层是逻辑上的发送接受

传输层提供的是远程进程与进程之间以messg为单位的逻辑通讯

应用层把数据交给传输层 传输层把目标端口封装后交给网络层。

传输层 vs. 网络层

网络层服务:主机之间的逻辑通信

传输层服务:进程间的逻辑通信

       依赖于网络层的服务

  • 延时、带宽

       并对网络层的服务进行增强

  • 数据丢失、顺序混乱、加密

也就是说传输层可以加强一些网络层的服务,比如 防止数据丢失,顺序混乱,加密等

但是有些不行 比如延时 带宽 这是硬性条件,优化不了

关于传输层网络层举个例子:

Ann家的12个小孩给另Bill家的12个小孩发信

  • 主机 = 家庭
  • 进程 = 小孩
  • 应用层报文= 信封中的信件
  • 传输协议= Ann 和 Bill两个人
  • 为家庭小孩提供复用解复用服务
  • 网络层协议 = 邮政服务
  • 家庭-家庭的邮包传输服务

十二个小屁孩写完后,144个信,交给Ann(十二个小孩的妈),Ann把这些信全放一个信件里,放在门口邮箱里,邮局把这个大信件发给Bill家门口邮箱,然后Bill取出来,看看写给谁的然后给她家的十二个小孩。

Internet传输层协议

可靠的、保序的传输: TCP

多路复用、解复用

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

不可靠、不保序的传输:UDP

  • 多路复用、解复用
  • 没有为尽力而为的IP服务添加更多的其它额外服务

都不提供的服务:

  • 延时保证
  • 带宽保证

TCP 提供 可靠的字节流服务

UDP提供 不可靠的 数据报的服务

0X01多路复用和解复用

复用:多个用户如何共用一条线路,解复用:到达目的地后如何区分是给谁的

多路复用

TCP是四元组 都用一个整数代表,UDP是二元组

TCP

应用层给传输层的传输内容时顺便给了目标端口 传输层封装 目标端口 源端口

传输层给网络层时候 除了传输层已经封装好的数据包 还有目标IP

目标网络层收到后 去掉IP部分 往上交 其余数据 传输层 收到后去掉端口部分 并对数据内容排序后 交给应用层。

上面是TCP复用解复用

UDP

UDP复用解复用: 应用层往下交时 给传输层 Message Socket-代表源端口 源ip 传输层 网络层封装后 交给对方网络层 对方网络层把端口 ip 上传给传输层 传输层根据这个 找到对应的Socket 然后将信息上传给相应的进程

多路解复用工作原理

TCP的跟UDP还不一样,因为他们的连接原理都不同,本质上还是一堆信息都发到一个主机上,传输层要想办法找到对应的应用来收发给他的信息,在传输时候,前面讲过都会建立一个Socket,找到Socket就知道这个信息发给谁的,也就是找目标端口。

下面这些不难,图片都解释很清晰,不再赘述。

原理

无连接(UDP)多路解复用

UDP复用

UDP复用2

UDP复用3

UDP复用4

面向连接(TCP)的多路复用

TCP复用

TCP复用2

TCP复用3

TCP复用4

面向连接的多路复用:多线程Web Server

WebServer

0X02无线传输:UDP

UDP: User Datagram Protocol [RFC 768]

“no frills,” “bare bones”Internet传输协议–没有多余的传输协议

“尽力而为”的服务,报文段可能

  • 丢失
  • 送到应用进程的报文段乱序

无连接:

  • UDP发送端和接收端之间没有握手
  • 每个UDP报文段都被独立地处理

UDP 被用于:

  • 流媒体(丢失不敏感,速率敏感、应用可控制传输速率)
  • DNS
  • SNMP

在UDP上可行可靠传输:

  • 在应用层增加可靠性
  • 应用特定的差错恢复

不用握手 可能是乱序的

UDP高效率 还希望可靠 怎么办?

只能传输在UDP跑 应用层加入一些机制负责可靠

UDP:用户数据报协议

UDP数据报

感觉除了这个报文格式,别的前面一直再重复,这个报文格式也有提过

新奇的就是这个校验和

UDP校验和

目标:检测在被传输报文段中的差错 (如比特反转)

发送方:

  • 将报文段的内容视为16比特的整数
  • 校验和:报文段的加法和 (1的补运算)
  • 发送方将校验和放在UDP的校验和字段

接收方:

  • 计算接收到的报文段的校验和
  • 检查计算出的校验和与校验和字段的内容是否相等:
  • 不相等––检测到差错
  • 相等––没有检测到差错,但也许还是有差错,比如残存错误

 

Internet校验和的例子

校验和例子

进位回滚:最高进位拉到最低位

 

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论