第六章 TCP与UDP

第六章 TCP与UDP

专栏总目录
第一章 计算机网络概述
第二章 OSI参考模型与TCPIP模型
第三章 局域网基本原理
第四章 广域网基本原理
第五章 IP基本原理
第六章 TCP与UDP
第七章 路由器&交换机&操作系统介绍
第八章 命令行操作基础
第九章 网络设备文件管理
第十章 网络设备调试
第十一章 以太网交换机工作原理
第十二章 配置Vlan
第十三章 STP协议
第十四章 交换机端口安全技术
第十五章 链路聚合
第十六章 IP子网划分
第十七章 DNS
第十八章 文件传输协议
第十九章 DHCP
第二十章 IPv6
第二十一章 IP路由原理
第二十二章 VLNA间路由
第二十三章 静态路由
第二十四章 路由协议概述
第二十五章 RIP
第二十六章 OSPF
第二十七章 ACL
第二十八章 NAT
第二十九章 HDLC&PPP
第三十章 3G+WLAN
第三十一章 H3CNE综合实验


一、写在开始

今天我们主要了解TCP/IP协议族的传输层协议主要包括TCP和UDP

 TCP是面向连接的可靠的传输层协议。它支持在并不可靠的网络上实现面向连接的可靠的数据传输

 UDP是无连接的传输协议,主要用于支持在较可靠的链路上的数据传输,或用于对延迟较敏感的应用

二、TCP/IP传输层的作用

  • 提供面向连接或无连接的服务
  • 维护连接状态
  • 对应用层数据进行分段和封装
  • 实现多路复用
  • 可靠地传输数据
  • 执行流量控制

三、TCP基本原理

报文格式

图(1)

在这里插入图片描述

图(2)

在这里插入图片描述

图(3)

在这里插入图片描述

这是TCP报文结构以及各字段的作用,下面的内容会提到部分字段的用处。

端口号

 每个应用程序进出网络都需要经过一个唯一端口(客户端的相同程序开多个也是不一样的端口),通过端口号来识别数据交由哪个应用程序处理

客户端:1024以上随机端口号,1024以下称为知名端口号

服务端:固定端口号

知名端口号:

​ TCP:

80:HTTP
20 21:FTP
23:TELNET
25:SMTP

​ UDP:

53:DNS
69:TFTP

图(4)

在这里插入图片描述

服务端:

​ 服务端是一种有针对性的服务程序。服务端是为客户端服务的,服务的内容诸如向客户端提供资源,保存客户端数据。

客户端:

​ 客户端(Client)是指与服务器相对应的端点,是访问服务器的一种客户端程序。

如图解释:

​ ​​ ​我们经常访问的百度网页就是一个web服务器(http协议或https协议),http协议常用的默认端口号是80;https协议常用的默认端口号是443,此时我们电脑访问百度的时候,百度会给我们回馈我们想要的数据,那么这个过程中,我们的电脑就是一个客户端,而访问百度的时候,百度的设备就称为服务端。
​ ​​ ​我们请求数据传输过程中,传输层的TCP封装报文的目的端口为https协议端口号443,而源端口是1024以上的随机端口(假设随机为2000),网络层的IP封装报文的源IP为本端IP地址,目的IP地址为http服务器的源IP地址。

图(5)

在这里插入图片描述

​ 服务器端回应数据过程中,传输层TCP封装报文的目的端口为客户端请求数据中的源端口(2000),而源端口是443,网络层的IP封装报文的源IP为本端服务器的IP地址,目的IP地址为客户端的源IP地址。

图(6)

在这里插入图片描述

TCP连接的建立(三次握手)

图(7)

在这里插入图片描述

如图7所示

【第一个数据段】SYN置位

HOSTA向和HOSTB进行通信(后面简称A、B),我们根据图(3)知道报文中会包含序列号用于确认,保障数据传输过程的稳定到达,,A会首先发送TCP建立连接握手报文,然后随机生成一个序列号(数字),放在Sequence Number字段中,Acknowledgment Number字段为0表示为收到封装后再发送给B。

【第二个数据段】SYN,ACK置位

当B收到以后,会对A收到的数据段进行确认,就会把A发送过来的Sequence Number(数字)+1后在自己的Acknowledgment Number中,再自己随机生成一个序列号(数字)放在Sequence Number字段中,封装后再发送给A。

【第三个数据段】ACK置位

当A收到以后,会再对B的数据段进行确认,就会把B发送过来的Sequence Number(数字)+1后在自己的Acknowledgment Number中,同时会根据B发送过来的Acknowledgment Number序列号,放到自己的Sequence Number字段中,封装后再发送给B。

也可以理解为,A第一次发给B会随机seq,同时B第一次发给A也会随机seq,但ACK(seq+1)是对每一次收到的seq的确认,同时也是下一次我再发给对方的seq序列号,双方各自都有自己的seq序列号。

我们在wireshark抓包可能显示的TCP建立的第一个包是seq=0,ack=0,但参考一些博文中说是那是软件产生的一种假象,真实并非数据中并非如此。

TCP传输的确认

图(8)

在这里插入图片描述

Sequence Number:上一次Acknowledgment Number

Acknowledgment Number=上一次Sequence Number+length

如果没有接收到或接受到不完整数据,会再次发送ACK请求对方重发

图(9)

在这里插入图片描述

TCP的超时重传

图(10)

在这里插入图片描述

假设A发送给B的数据中有1、2、3、4段,其3段B没有收到,这个时候ACK只会回应2段的ACK,这个时候A就会发现B没有收到3段,既是4段收到了也是如此。这个时候A就会重新将3段发送,关于第4段是否重复再发不发送具体得看设置,默认是即使第4段收到了也会再发送一次。

TCP连接的拆除(四次挥手)

图(11)

在这里插入图片描述

方式一(四次挥手):

由于A已经向B传输的数据已经结束,故A想结束TCP会话,这个时候A会向B发送FIN置位的数据段给B,

B收到后会根据Seq进行ACK的确认,

此时会话并没有彻底结束,因为B没有向A确认请求结束,为什么B要向A再请求结束一次呢?为了保障B向A的数据能够发送完成,

所以当B数据传输完成会再向A发送断开连接FIN置位的报文,

当A收到后会向B发送ACK确认报文

此时会话彻底结束

方式二(RST置位):

A想和B直接结束会话,A可以直接向B发送RST置位TCP报文。

TCP滑动窗口

图(12)

在这里插入图片描述

滑动窗口:通过通告对方本机接收能力,来实现流量控制,将单位时间内能够接收多大大小的参数放在Window字段中通告给对方。

TCP的特点

优点:传输可靠性 高

缺点:占用带宽高,传输延迟高

应用场景:对数据完整性要求高,但是对传输延迟要求低。

四、UDP基本原理

报文格式

图(13)

在这里插入图片描述

图(14)

在这里插入图片描述

图(15)

在这里插入图片描述

UDP的特点

优点:占用带宽低,传输延迟低

缺点:没有任何可靠性机制

应用场景:对传输延迟要求高,但是对数据完整性要求低。

五、TCP与UDP的对比

图(16)

在这里插入图片描述

六、实验

请下载附件压缩包,查看pdf文档根据文档进行配置学习,同时要安装最新版HCL模拟器及Wireshark抓包软件,简单认识模拟器并使用Wireshark抓包对IP报文、FTP报文、TCP报文进行简单认识,关于操作命令我们暂且不用研究,后面会具体介绍。

关于模拟器的下载和安装可参考我的另一篇文章,《认识新华三官网&官网下载网络模拟器&HCL的安装&了解HCL》

实验部分命令如果现在不认识可以直接照抄,后面会再详细介绍

六、小结

本章节的内容比较重要,我你们要弄够知道TCP和UDP通过端口号标识上层应用和服务的,其中TCP通过三次握手建立可靠连接、TCP通过校验和进行差错校验,通过序列号、确认和超时重传机制实现可靠传输,通过滑动窗口实现流量控制。而UDP实现简单,资源占用少,实时性强,适用于可靠性高的网络和延迟敏感的应用。


结束语

如果您认为本文对您有帮助,请帮忙在文末关注、点赞、收藏、文头点击订阅专栏,因为有了热度才能帮助更多人学习到看到本文,关于本文如果有问题可以在评论区留言,回复效率可能会低但是一定会积极恢复哦!~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网工路上的绊脚石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值