(*长期更新)软考网络工程师学习笔记——Section 8 传输层

简介: (*长期更新)软考网络工程师学习笔记——Section 8 传输层

一、传输层的基本协议


传输层依靠的基本协议是TCP(传输控制协议)和UDP(用户数据报协议),传输层的相关知识由这两部分协议展开。


二、面向连接服务和无连接服务


1、面向连接服务,分为三步:建立连接、使用连接和释放连接,即首先要建立一条通信线路,然后在正式传输数据时,数据分组就不再需要携带目的地址,可靠性高,但它相比无连接服务其效率低,例如TCP协议。

2、无连接服务,由系统选定路线进行传输,收发方只有在传输数据时才处于激活状态,其下层资源动态分配,相比面向连接服务,它更加灵活、通信比较迅速且开销小,但可靠性低,不能防止报文出错,例如IP协议、UDP协议。


三、TCP


(一)TCP的基本概念


TCP是一种可靠的、面向连接服务的字节流服务,源主机在传输数据时要先与目标主机建立连接,然后被编号的数据段按顺序进行收发,且同时对每个数据段进行确认,从而保证了可靠性,若没有收到确认则会再次发送。


(二)TCP的三种机制


TCP是建立在无连接服务的IP基础上,通过三种机制实现面向连接服务:

1、使用序号对数据报标记,便于接收服务向高层传递数据之前调整错序的数据报。

2、通过使用确认、校验和定时器系统提供可靠性。

3、使用窗口机制调整数据流量,即可变大小的滑动窗口协议减小接收方缓冲区满而造成丢失数据报文的可能性,从而实现流量控制。


(三)TCP的报文首部格式


以太网的最大传输单元(MTU)是1518byte,其中首部18byte,IP首部中最少为20byte,故以太网可以传送的最大TCP段为1480byte。

TCP的报文首部格式有以下:

1667131945741.jpg

1、源端口

字段长度为16位,用于标识源端和目标端的应用进程,端口号取值范围为0-65535。

2、序列号

又称为报文段序号,字段长度为32位。

3、确认号

字段长度为32位,即对方下一个报文段的第一个数据字段的序号。

4、报头长度

又称为数据偏移字段,字段长度为4位,单位32位,没有选项字段的TCP头部长度为20字节,最多可以有60字节的TCP头部长度。

5、保留字段

字段长度为6位,通常设置为0。

6、标记

当请求方发出同步SYN连接请求后,等待对方回答同步SYN、确认ACK,这样防止建立错误的连接。

(1)紧急URG:紧急有效,需要尽快传送;

(2)确认ACK:建立连接后的报文回应,ACK置1;

(3)推送PSH:接收方应将该报文尽快交给上层协议,无需等待缓存满;

(4)复位RST:重新连接;

(5)同步SYN:发起连接,即当TCP实体要建立连接时,其段头中的SYN标志置1;

(6)终止FIN:释放连接。

7、窗口大小

字段长度为16位,该字段用于进行流量控制(通过可变大小的滑动窗口协议),作为接收方让发送方设置其发送窗口的依据,该值为期望下一次接收的字节数。

8、校验和

字段长度为16位,对整个TCP报文段进行校验和计算,并由目标端进行验证。

9、紧急指针

字段长度为16位,它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

10、选项

字段长度可变,可变至40字节,为保证报文长度是32位的倍数,因此还需要填充0。


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


TCP协议使用三次握手机制建立连接,其目的是使数据段的发送和接收同步,同时也向其它主机表明其一次可接收的数据量(窗口大小)并建立逻辑连接,双方通信前源主机和目标主机都处于CLOSED状态。

1、第一次握手

源主机(发送方)发送一个SYN=1的TCP数据段,同时标明初始序号ISN,ISN是一个随时间变化的随机值,即SYN=1,SEQ=x,源主机进入SYN-SENT状态。

2、第二次握手

目标主机(接收方)收到SYN包后,发回确认数据报文ACK,即ACK=1,同时确认序号字段,表明目标主机期待收源主机下一个数据段的序号,即ACK=x+1。

数据段中另外设置SYN=1,并包含目标主机的段初始序号y,即ACK=1,确认序号ACK=x+1,SYN=1,自身序号SEQ=y,此时目标主机进入SYN-RCVD状态,源主机进入ESTABLISHED状态。(当发生错误连接时,会以RST包回应拒绝连接)

3、第三次握手

源主机再回送一个确认数据段,同样带有递增的发送序号和确认序号,即ACK=1,确认序号ACK=y+1,自身序号SEQ+1。经过三次握手后,源主机就可以与目标主机互相收发数据。


(五)TCP四次挥手释放连接


TCP释放连接分为四步,此时源主机和目标主机都处于ESTABLISHED状态。

1、第一次挥手

源主机发送一个释放报文,FIN=1,自身序号SEQ=x,源主机进入FIN-WAIT状态。

2、第二次挥手

目标主机接收到报文后发送确认报文,即ACK=1,确认序号ACK=x+1,自身序号SEQ=y,目标主机进入CLOSE-WAIT状态,此时TCP连接处于半关闭状态,源主机已经停止发送数据,但目标主机仍可发送数据。源主机在接收到ACK报文后等待目标主机发出FIN报文。

3、第三次挥手

目标主机确认没有数据后,发出释放报文,即FIN=1,ACK=1,确认序号ACK=x+1,自身序号SEQ=z,此时目标主机进入LAST-ACK状态。

4、第四次挥手

源主机接收到释放报文后,对目标主机发送确认报文,即ACK=1,确认序号ACK=z+1,自身序号SEQ=x+1,等待一段时间确定确认报文到达后,源主机进入CLOSED状态,目标主机在接收到确认报文后,也进入CLOSED状态。


例如,主机甲向主机乙发送了一个TCP连接建立请求,主机乙给主机甲的先应报文中,标志字段SYN=1,ACK =1,FIN=0。


四、UDP


(一)UDP的基本概念


用户数据报协议(UDP)是一种不可靠的、无连接服务的数据报服务,它在IP层之上提供了端口寻址能力,数据附加源端口号和目标端口号等UDP报头字段后,直接发往目的主机,在传送数据较少且较小的情况下,UDP比TCP显得更加高效。


(二)UDP首部结构


UDP的首部格式有以下:

1667132034058.jpg

1、源端口号

字段长度为16位,与TCP中的端口号字段作用相同,用于标识源端的应用进程,在需给对方回信时用,不需要时为0。

2、目标端口号

字段长度为16位,与TCP中的端口号字段作用相同,用于标识目标端的应用进程,在需目标交付报文时用到。

3、长度字

字段长度为16位,用于标明UDP头部和UDP数据的总长度字节。

4、校验和

该字段为可选项,长度为16位,用于校验UDP头部和UDP数据,有错时就丢弃。


(三)协议端口号


协议端口号是用于标识目标主机进程的方法,TCP/IP协议中使用16位的端口号来标识端口,即端口号的取值为0-65535。

协议端口号可分为系统端口、登记端口和客户端使用端口三种。


image.png


1、系统端口

以下是常用的系统端口协议号(重点!!!):

协议号 英文名称 用途
20 FTP-DATA FTP数据传输
21 FTP FTP控制
22 SSH SSH登录
23 telnet 远程登录
25 SMTP 简单邮件传输协议
53 DNS 域名解析
67 DHCP DHCP服务器开启,用于监听和接收客户请求信息
68 DHCP 客户端开启,用于接收DHCP服务器的消息回复
69 TFTP 简单FTP
80 HTTP 超文本传输
110 POP3 邮局协议
143 IMAP 交互式邮件存取协议
161 SNMP 简单网管协议
162 SNMP(trap) SNMP Trap报文
443 HTTPS 加密的超文本传输服务


2、登记端口

该端口是为没有熟知端口号的应用程序使用的,端口号范围为1024-49151。


3、客户端使用端口

该端口在客户端进程运行时动态使用,使用完后,进程会释放端口,端口号范围为49152-65535。


(四)TCP和UDP的对比


由于TCP协议的实现较为复杂,它采用三次握手建立连接,传输过程中可以实现可靠传输、流量控制以及拥塞控制,从而带来了较大的开销;而UDP协议主要通过端口号来实现传输层次的寻址,其开销较小。


相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
11天前
|
网络协议 Docker 容器
Ubantu docker学习笔记(七)容器网络
Ubantu docker学习笔记(七)容器网络
|
19天前
|
监控 Java 数据库连接
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
25 3
|
19天前
|
网络协议 网络架构 数据格式
计算机网络学习笔记(一)
OSI七层网络模型旨在支持异构网络互联,从下到上分别为物理层(传输比特流)、数据链路层(帧传输,如交换机)、网络层(IP数据包路由,如路由器)、传输层(TCP/UDP,端到端通信)、会话层(管理会话)、表示层(数据格式转换)和应用层(用户接口,如FTP, SMTP)。每一层负责不同的通信功能,并通过协议如PPP, IP, TCP等协同工作。
|
19天前
|
缓存 网络协议 开发者
计算机网络学习笔记(三)
TCP的异常终止使用reset报文,用于强制关闭连接,不等待正常四次挥手。RST标志位设置时,发送方直接丢弃缓存,接收方无需确认。常见情况包括:尝试连接服务器未开放的端口、一方异常崩溃、收到不属于现有连接的报文、超时未收到确认报文或应用开发者优化效率。reset报文帮助释放资源,防止连接挂起。
|
19天前
|
安全 数据安全/隐私保护
计算机网络学习笔记(四)
HTTPS流程涉及服务器的公钥/私钥和客户端随机密钥。首先,客户端向服务器443端口发起请求,服务器发送公钥给客户端。客户端验证公钥后生成随机密钥(client key),用公钥加密后发送回服务器。服务器用私钥解密获取client key,然后用它加密数据成密文传回客户端。客户端用client key解密完成安全传输。
|
19天前
|
存储 网络协议 算法
|
19天前
|
Kubernetes API 调度
|
19天前
|
存储 安全 算法
|
19天前
|
运维 监控 安全
【亮剑】为网络工程师总结了Juniper设备的配置、监控和故障排除命令
【4月更文挑战第30天】本文为网络工程师总结了Juniper设备的配置、监控和故障排除命令。配置命令包括基础设置、路由协议、安全和系统服务;监控命令涉及系统状态、接口、流量及路由表;故障排除命令涵盖日志、接口、路由协议和安全方面的排查工具。掌握这些基本命令将提升网络运维效率。
|
19天前
|
网络协议 算法 网络虚拟化