【计算机网络】传输层

简介: 【计算机网络】传输层

一、传输层概述

1、传输层的功能

传输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)

传输层还要对收到的报文进行差错检测

传输层提供面向连接和无连接的服务

2、端口

端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。

端口号 服务
21 FTP
23 telnet
53 DNS
80 http
443 https

二、用户数据报协议UDP

1、UDP概述

  1. UDP 是无连接的,即发送数据之前不需要建立连接。
  2. UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
  3. UDP 是面向报文的,没有拥塞控制
  4. UDP支持一对一、一对多、多对一和多对多的交互通信
  5. UDP 的首部开销小,只有8个字节。

2、UDP首部格式

  1. 源端口:源端口号。在需要对方回信时选用。不需要时可用全0
  2. 目的端口:目的端口号。这在终点交付报文时必须使用
  3. 长度:UDP 用户数据报的长度,其最小值是8(仅有首部)
  4. 检验和:检测 UDP 用户数据报在传输中是否有错。有错就丟弃

三、传输控制协议TCP

1、TCP概述

  1. TCP 是面向连接的传输层协议
  2. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点
  3. TCP 提供可靠交付的服务
  4. TCP 提供全双工通信
  5. 面向字节流

2、套接字socket

TCP 连接的端点做套接字(socket)

套接字的表示方法:在点分十进制的 IP 地址后面写上端口号,中
用冒号或逗号隔开

套接字 socket = (IP 地址:端口号)

152.136.221.206:443

每一条 TCP 连接唯一地被通信两端的两个端点(两个socket)所确定

TCP 连接 = {socket1, sockct2} = {(IP1: port1), (IP2: port2))

3、TCP首部格式

  1. 源端口和目的端口:各占2个字节,分别写入源端口号和目的端口号
  2. 序号:占4字节。报文段首字节的在字节流的编号
  3. 确认号:占4字节。期望收到对方下一个报文段的第一个数据字节的序号
  4. 数据偏移:占4位。 TCP 报文段的首部长度
  5. 保留:占6位
  6. 紧急 URG:当 URG 置1时,发送应用进程就告诉发送方的 TCP 有紧急数据要传送。于是发送方TCP 就把紧急数据插入到本报文段数据的最前面
  7. 确认 ACK:仅当 ACK =1时确认号字段才有效。当 ACK = 0时,确认号无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置1
  8. 推送 PSH:在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应,发送方TCP 把 PSH 置1。接收方直接交付接收应用进程(不进缓存)
  9. 复位 RST:TCP 连接中出现严重差错,必须释放连接,然后再重新建立运输连接
  10. 同步 SYN:SYN 置为1就表示这是一个连接请求连接接受报文
  11. 终止 FIN:FIN=1时,释放一个连接
  12. 窗口:占2字节。窗口值作为接收方让发送方设置其发送窗口的
    依据
  13. 检验和:占2字节。
  14. 紧急指针:占2字节。紧急指针仅在 URG = 1时才有意义,指出本报文段中的紧急数据的字节数
  15. 可选项
    1. 最大报文段长度 MSS:TCP 报文段长度减去 TCP 首部长度
    2. 时间戳:计算往返时间 RTT、防止序号绕回 PAWS

四、TCP可靠传输

数据链路层的可靠传输通常使用 确认 和 超时重传 两种机制来完成。

1、工作原理

1)停止等待协议

在发送完一个分组后,必须暂时保留己发送的分组的副本

分组和确认分组都必须进行编号

在不可靠的传输网络上实现可靠的通信

自动重传请求ARQ

2)连续ARQ协议

累积确认:接收方对按序到达的最后一个分组发送确认,这就表示:到这个分组为止的所有分组都己正确收到了

优点:容易实现,信道利用率高

缺点:不能向发送方反映出接收方己经正确收到的所有分组的信息

2、可靠传输的实现

1)滑动窗口协议

TCP连接的每一端都必须设有两个窗口:一个发送窗口和一个接收窗口

TCP的可靠传输机制用字节的序号进行控制

2)滑动窗口的缓存

环形窗口

五、TCP流量控制

1、流量控制概述

让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞

2、持续计时器

发送方和接收方死锁局面的产生:ack=1、接受窗口为0

TCP 为每一个连接设有一个持续计时器

  1. 若持续计时器设置的时间到期,就发送一个零窗口探测报文段
  2. 若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器
  3. 若窗口不是零,打破死锁

六、TCP拥塞控制

1、拥塞控制概述

资源拥塞的原因:对资源需求的总和 > 可用资源

拥塞控制:是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素

流量控制:往往指在给定的发送端和接收端之间的点对点通信量的控制,它所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

2、拥塞控制起到的作用

3、拥塞控制算法策略

拥塞窗口cwnd

原则:没拥塞就增大窗口、出现拥塞就减小窗口

SendWin=min{CongWin, RecvWin}:同时满足拥塞控制和流量控制要求

1)慢开始

当 TCP 连接进行初始化时,将拥塞窗口cwnd置为1。

可用带宽可能 >> MSS/RTT,应该尽快加速,到达希望的速率。

当连接开始时,指数性增加(每个RTT)发送速率直到发生丢失事件(启动初值很低,但是速度很快)

2)拥塞避免

乘性减:丢失事件后将cwnd降为1, 将cwnd / 2作为门限 ssthresh,进入慢启动阶段(倍增直到ssthresh)

加性增:当cwnd > 门限 ssthresh(上次发生拥塞的窗口的一半)时,一个RTT如没有发生丢失事件,将cwnd加1(探测)

3)快重传与快恢复

快重传:接收方每收到一个失序的报文段后就立即发出重复确认,让发送方尽早知道有报文段没有到达接收方。

快恢复:发送方收到3个重复的ACKs,cwnd减半、窗口线性增长

4)总结

当cwnd<ssthresh:发送端处于慢启动阶段,窗口指数性增长。

当cwnd > ssthresh:发送端处于拥塞避免阶段,窗口线性增长。

当收到三个重复的ACK:ssthresh设置成 cwnd/2,进入拥塞避免阶段。

当发生超时timeout:cwnd=1,进入慢启动阶段。

七、TCP传输连接管理

1、TCP3次握手的必要性

2、TCP3次握手

变化的初始序号 + 双方确认对方的序号(3次握手)

3、TCP关闭连接

客户端,服务器分别关闭它自己这一侧的连接:发送FIN bit = 1的TCP段

一旦接收到FIN,用ACK回应:接到FIN段,ACK可以和它自己发出的FIN段一起发送,可以处理同时的FIN交换

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
网络协议 安全 网络性能优化
计算机网络——传输层(五)
计算机网络——传输层(五)
124 0
计算机网络——传输层(五)
|
网络协议 API
计算机网络:传输层——多路复用与解复用
计算机网络:传输层——多路复用与解复用
336 0
|
12月前
|
域名解析 缓存 网络协议
TCP传输层详解(计算机网络复习)
本文详细解释了TCP/IP协议族的分层模型、各层的功能、TCP报文的格式以及TCP连接建立的三次握手和断开的四次挥手过程。
1411 2
TCP传输层详解(计算机网络复习)
|
12月前
|
域名解析 网络协议 前端开发
【第四期】网络层、传输层、应用层
【第四期】网络层、传输层、应用层
135 3
|
网络协议 网络安全
计算机网络-传输层
计算机网络-传输层
|
机器学习/深度学习 网络协议 网络性能优化
[计算机网络]深度学习传输层TCP协议
[计算机网络]深度学习传输层TCP协议
163 1
|
缓存 网络协议 网络性能优化
计算机网络—传输层-tcp、udp协议详解
计算机网络—传输层-tcp、udp协议详解
|
网络协议 安全 网络性能优化
|
网络协议 程序员 API
网络原理(2)——TCP协议(传输层)
网络原理(2)——TCP协议(传输层)
290 0