HCIA笔记(6)— 传输层协议

前言:
传输层对应端对端的连通性,常见协议为TCP/UDP

学习目标:

  • 掌握TCP和UDP工作原理
  • 描述TCP和UDP报文格式
  • 了解常见服务的应用端口号

TCP:面向连接,可靠传输。
HCIA笔记(6)— 传输层协议_第1张图片

  • TCP允许一个主机运行多个应用程序,每台主机拥有多个应用端口,每对端口号,源和母的IP组合唯一标识一个对话。
  • 端口分为知名端口(0-1023,如FTP、HTTP等)和动态端口(1024-65535,不固定分配给某个任务,只要运行程序提取访问网络申请,系统会分配端口号供程序使用)。

HCIA笔记(6)— 传输层协议_第2张图片

  • TCP通常使用IP作为网络成协议,TCP书记段封装在IP数据包内
  • TCP由Header和Data组成。TCP最多可有有60字节的头部,如果没有Options字段,正常长度为20字节。
  • 16位源端口号和16为目标端口号加上源IP和目的IP唯一确定一个TCP连接。
  • 32位序列号,用于标识发送端发出不同的TCP数据段的序号。接收端根据此序列号,可重组数据。
  • 32位确认序列号,标识接收端收到数据段,为序列号加1。
  • 4位头部长度,0101表示头部有5个4字节的数目,即20字节。
  • 16位窗口大小表示接收端单次确认而接收到的数据大小,16位对应窗口最大值为65536字节,用于流量控制。
  • 16位校验和,检验TCP报文段,包括TCP头部和数据。该值由发送端计算和记录,接收端验证。

HCIA笔记(6)— 传输层协议_第3张图片

  • TCP面向连接,可靠的全双工传输层协议
  • 如图所示,TCP连接建立是三次握手的过程。
  • 首先主机发送SYN数据段(序列号seq为a),请求建立连接
  • 服务器回复SYN数据段和ACK数据段(seq为b,ack为a+1),确认主机A的SYN报文
  • 主机A发送ACK数据段(seq为a+1,ack为b+1)确定服务器SYN报文。

HCIA笔记(6)— 传输层协议_第4张图片

  • TCP可靠传输体现在确认技术上。
  • 重点在于确认号上。目的设备收到数据段,会向源发送确认报文,源收到后继续发送数据,如此重复。
  • 如图所示,如果服务器收到前M+1499的字节,会以M+1499+1的序列号进行确认。如果服务器A没收到M+1500系列号的字节,服务器会再次以序列号M+1500进行确认,主机A重发数据

HCIA笔记(6)— 传输层协议_第5张图片

  • TCP滑动窗口技术通过改变窗口大小实现流量控制,如图所示,服务器以ACK 3073响应,调整窗口大小3072,主机A改变其发送速率。

HCIA笔记(6)— 传输层协议_第6张图片

  • TCP全双工传输数据,TCP三次握手建立的是两个方向的连接,传输完毕后两个方向连接也要都关闭。关闭为四次握手。
  • 主机A想终止连接,发送标识FIN,ACK数据段(序列号为a,确认序列号为b)。
  • 服务器发送ACK数据段(序列号为b,确认序列号为a+1),对于主机A的FIN确认。
  • 服务器A也要终止连接,向主机发送FIN,ACK数据段(序列号为b,确认序列号为a+1)
  • 主机A回复了ACK数据段(序列号为a+1,确认序列号为b+1),对FIN报文的确认。
  • 以上四次交互完成两个方向连接的关闭。

HCIA笔记(6)— 传输层协议_第7张图片

  • UDP面向无连接,传输不可靠。应用在对可靠性要求不高,传输速度和延迟要求较高时,用UDP代替TCP。UDP没有确认技术和滑动窗口机制。

HCIA笔记(6)— 传输层协议_第8张图片

  • UDP也我分为头部和数据区域两部分。UDP适合于实时数据传输,语言和视频通话。
  • 包含16位源端口号和16位目标端口号
  • 16位UDP长度,与TCP不同,这里指的是头部和数据的字节长度。UDP头部长度为8字节,所以最少是8
  • 16位UDP校验和,与TCP相同功能,该字段可选。

UDP传输过程:

  • UDP传输数据包是以有序方式发送到网络,每个数据包独立在网络中被发送,也就是说先发送的数据包不一定先到,因为UDP数据包没有序号,需要应用程序提供报文到达确认,排序和流量控制等功能。通常情况下,UDP采用实时传输机制和时间戳来传输语音和视频数据。

  • UDP不提供重传机制,占用资源小,处理效率高,一般处理一些时延敏感流量。如语音视频。

总结:

  1. TCP头部的确认标识位有什么作用
    TCP报文头中的ACK标志位用于目的端对已收到数据的确认。目的端成功收到序列号为x的字节及之前的所有字节后,会以序列号x+1进行确认。
  2. TCP头部中哪些标识位参与TCP三次握手
    TCP的三次握手过程中,要使用SYN和ACK标志位来请求建立连接和确认建立连接。

你可能感兴趣的:(网络,协议,HCIA)