HCNA-5.端口号、传输层协议TCP与UDP

传输层

图片[1]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

传输层概述:

  • 传输层提供端到端的连接
  • 网络层提供点到点的连接

图片[2]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

在网络中,网络层会提供一个IP给设备,可以称为节点、node,在数据包中,根据IP找到了这个设备。在网络层解封装后,只有该设备的地址,在该设备上运行着许多应用程序,这时候就需要传输层的解封装后的端口号,用端口号确定该数据包传达到哪个应用。

图片[3]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

翻译:我收到了来自同一来源mac和ip的三个数据包。我的哪一个应用程序获取每个应用程序中的数据

图片[4]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

翻译:我会查看UDP或TCP目标端口来识别应用程序!

图片[5]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记


传输层端口:Port,用来区分不同的网络服务

图片[6]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

在传输中,两个设备互发数据时,源IP、目标IP会固定,然后根据应用使用的协议,在传输层决定使用TCP或UDP,接收方的端口号一般是不会相同的。

例如在http服务端中,80为服务端口,设备需要访问时会发送一个请求包,该请求包在传输层数据中会有目标IP(服务端IP),目标端口(服务端口),源IP(本设备的IP),源端口(源端口为随机)。在发送请求时会开通一个临时端口,该端口随机变化(系统自动获取一个未被占用的端口),用于发送接收数据包,当应用关闭时(网络会话关闭时),才会释放端口。

在华为设备中,可以使用tcp status命令查看当前设备与其他设备建立的连接。
Windows系统中,可以使用性能监视器查看。

图片[7]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记
图片[8]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

常见的协议端口:

FTP:21(控制端口)、20(收端,根据FTP协议、模式使用)

HTTP:80 HTTPS:443

Telnet:23 SSH:22

SMTP:25 POP3:110 IMAP:143

DHCP:67服务端,68客户端。

在一个端口被占用后,如果还有程序需要占用该端口则需要关闭之前建立的连接,否则后面的程序将无法占用该端口。

案例:在一台服务器上搭建多个Web站点,解决方法有3个

1.端口号不同:修改服务占用的端口,开启两个服务,分别设置服务使用的端口号为80、8080,只要端口不一样(冲突)即可。

2.不同的IP:配置多IP即可,两个服务端口号同样使用80端口。非常不推荐,特别是从硬件来讲,灵活性、可用性极低。

3.不同的主机名(域名):将IP替换成域名,利用Web服务的虚拟主机配置,将不同域名映射到不同的站点目录。


传输层协议:

协议 备注
TCP Transmission Control Protocol,传输控制协议                    
可靠的、面向连接的协议
传输效率低,类似打电话
UDP User Datagram Protocol,用户数据报协议
不可靠的、无连接的服务
传输效率高,类似群聊

TCP:

图片[9]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

UDP:

图片[10]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

TCP与UDP数据包结构对比

图片[11]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

TCP比UDP多了序列号、确认序号、报头长度、保留位、标记位(URG、ACK等)、窗口、校验和、晋级为、可选项。

TCP的数据包:

图片[12]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

UDP的数据包:

图片[13]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

TCP:

  • 图片[14]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

所有基于TCP协议的应用,都会建立一个TCP连接。

  • TCP会话的建立-三次握手:

    图片[15]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记
    在应用建立连接时,会先发送SYN,(第一次握手)全称 Synchronize Sequence ,标记里的同步位,意思是请求同步。该数据包会有一个序列号,seq(Sequence Number)。

    在服务收到后,会把标记位的ACK(Acknowleclgment number)进行标记,用作确认,该包也会包含序列号。

    在收到服务器回复后,应用会对服务发过来的包进行确认,该包的序列号会是在上次发包数据中的下个序列号的数据,并且在ACK中会对收到的包中的序列号进行确认,至此三次握手完成。

三次握手的标记位分别是:SYN ,SYN、ACK,ACK

在三次握手只有第一个包是没有确认位(ACK)的,也只有第一个包是有同步位(SYN)的。

  • 图片[16]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

  • TCP会话的确认和重传

  • 图片[17]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

  • 图片[18]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记
    在真实抓包中,ACK的数值取决于要回复的数据包的序列号数值,再加上回包的字节长度,最后就会得出一个确认号。如下图所示,

    在TCP会话建立完成后,不是每个数据包都会有回复。

图片[19]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记
图片[20]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

如果总共发了3个包,每个数据包的字节长度都是1000的情况下,那么收包方回复的确认位为4000就代表了前面3个包都收到了

  • 图片[21]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

如果出现丢包的情况下,如上图所示,丢失了一个ack为2000的包,那么服务器会发送一个ack为2000的数据包到客户端,客户端收到后,会重发ack为2000的包,在服务器收到后,将会发回正确的ack4000.如果在重发过程中,响应时间过久会导致服务超时,断开TCP会话。

  • TCP会话的拥塞和流量控制


    图片[22]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记
    图片[23]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

在每次发包中,会有一个窗口大小,相当于缓冲区,,其作用就是告诉对方,我下次可以接受的数据包只能有这么大。

  • TCP会话的终止-四次挥手:

主要使用标记位中的终止位(FIN)。

图片[24]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记
图片[25]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

UDP

图片[26]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记
图片[27]-HCNA-5.端口号、传输层协议TCP与UDP-织秋笔记

  • UDP不提供重传机制,占用资源小,处理效率高
  • 一些时延敏感的流量,如语音、视频等,通常使用UDP作为传输层协议。

TCP和UDP的对比

传输控制协议(TCP) 用户数据报协议(UDP)
面向连接 无连接
可靠传输 尽力而为的传输
        支持留空及窗口机制                 物流控及窗口机制        
HTTP、FTP等 TFTP、DNS、DHCP等
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容