计算机网络(六)

运输层

前面的物理层、数据链路层、网络层 它们共同解决了将主机通过网络互联起来所面临的问题、实现了主机到主机之间的通信 。

但是在网络中实际通信的是位于通信两端主机中的进程。
如何为不同主机的进程提供直接的通信服务 是运输层的任务,运输层的协议又叫做端到端的协议

一、进程端口号、复用与分用的概念

进程端口号

发送方的复用和接收方的分用

通过视频了解端口号在数据传输中的作用
视频5:58处

二、TCP和UDP的区别

UDP不需要建立连接 ,可以直接发送数据

TCP需要进行三次握手建立连接 、报文发送结束之后需要进行4次挥手断开连接

UDP协议支持单播、多播、广播

TCP协议只支持单播

UDP是面向报文 的协议
TCP是面向字节流 的协议、这是TCP能够进行拥塞控制、流量控制的前提。

UDP 向上层提供的是不可靠传输服务 、可能存在丢失、误码等情况
TCP 向上层提供可靠传输服务 ,不存在误码、丢失、乱序等情况

UDP和TCP数据报的首部格式 对比

总结:

三、TCP的流量控制

一般情况下,我们希望数据传输的越快越好,但是如果接收方来不及接收大量数据,就会导致数据丢失,所以就需要流量控制 。

流量控制是利用滑动窗口机制实现的,具体流程观看视频0:44处

四、拥塞控制

在某一时刻内,对网络资源的需求量超出了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫拥塞。

  • 计算机中的带宽,交换节点的缓存等都是网络资源。

如果出现拥塞而不控制,整个网络的吞吐量将随输入负荷的增大而下降。

拥塞控制有四种算法:

  • 慢开始
  • 拥塞避免
  • 快重传
  • 快恢复

五、TCP超时重传的时间选择

六、TCP可靠传输的实现

七、TCP连接的建立与释放

TCP连接的建立

TCP是面向连接的运输层协议,在数据通信之前需要与服务段建立连接。

**"三次握手"**是TCP协议建立连接步骤的俗称。

第一次握手:
客户端 发送同步代码SYN=1 ,表明这是一个TCP请求报文段;序号字段seq=x 被设置了一个初始值x作为TCP客户进程所选择的初始序号。(TCP规定,SYN=1的报文段不能携带数据,并且要消耗一个序号)
第二次握手:

服务端发送确认报文段,同步代码SYN=1,ACK=1 ,表明这是一个确认报文段,序号字段seq=y 是服务进程选择的初始序号,ack=x+1是服务段对第一次握手seq=x的确认 (因为该报文段SYN=1,所以也不能携带数据)
第三次握手:

客户端发送ACK=1确认字段 ,序号字段seq=x+1 是第一次握手seq=x的序号被消耗了,所以要+1,ack=y+1 是对第二次握手seq=y的确认。(TCP规定,普通的确认报文可以携带数据,如果不携带数据则不消耗序号,所以下一次(三次握手之后)客户端请求携带数据,序号seq仍然等于x+1)

TCP连接的释放

四次挥手

四次挥手详细过程

TCP报文段首部格式

相关推荐
沫璃染墨7 小时前
从零入门计算机网络系列(十五):TCP可靠传输机制详解——从序号与确认应答到乱序处理
服务器·网络·c++·tcp/ip·tcp
xiaoye-duck8 小时前
《C++ 项目:手写大模型接入 SDK》本地 Ollama 部署与适配
开发语言·网络·c++·语言模型
流浪0019 小时前
计算机网络篇20:网络层——IP 协议的定位与 IPv4 报头字段,从 20 字节首部到 TTL 防环
tcp/ip·计算机网络·ttl·网络层协议·ip报头
叼烟扛炮9 小时前
Linux 学习笔记(六十一):网络编程毕业设计——Reactor 反应堆模式
linux·网络·笔记·学习·课程设计
2401_868534789 小时前
【网络安全
网络·python
xyzzklk9 小时前
变相解决华为Mate 8锁屏后无法建立入站网络连接
linux·运维·服务器·网络·华为·go·安卓
叼烟扛炮11 小时前
Linux 学习笔记(五十九):epoll 的生死抉择——LT 与 ET 模式
linux·运维·服务器·网络·笔记·学习·php
xixingzhe220 小时前
AI 对话打字机效果:SSE 和 HTTP 的区别与适用场景
网络·网络协议·http
xiaoye-duck20 小时前
《C++ 项目:手写大模型接入 SDK》Gemini接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
布裘21 小时前
【银河麒麟】重启后时区丢失?排查发现 localtime 被业务程序替换成硬链接
linux·运维·网络