首页 > 其他 > 详细

Blog.011 传输层协议详解

时间:2021-05-20 15:19:11      阅读:21      评论:0      收藏:0      [点我收藏+]

本章目录

 

 

 

1. 传输层协议的分类
2. TCP协议
  2.1 TCP协议的概念
  2.2 TCP报文段
3. TCP连接
  3.1 TCP建立连接·三次握手
  3.2 TCP断开连接·四次挥手
  3.3 TCP半关闭、半连接、半打开的概念
4.常用的TCP端口号及其功能
5. UDP协议
  5.1 UDP协议的概念
  5.2 UDP报文的首部格式
6. 常用的UDP端口号及其功能

 

 

 

1.传输层协议的分类

    传输层是一种只有主机才拥有的层次,使用网络层的服务为应用层提供通信服务。传输层提供进程与进程之间的通信,有两种协议:

    (1)TCP(Transmission Control Protocol)传输控制协议;
    (2)UDP(User Datagram Protocol)用户数据报协议。

2. TCP协议

  2.1 TCP协议的概念

    (1)TCP是面向连接的、可靠的进程到进程通信的协议;
    (2)TCP提供全双工服务,即数据可在同一时间双向传输;

  2.2 TCP报文段

 

    (1)TCP将若干个字节构成一个分组,叫报文段(Segment);
    (2)TCP报文段封装在IP数据报中。

 

技术分享图片

  • 序号:发送端为每个字节进行编号,便于接收端正确重组;
  • 确认号:用于确认发送端的信息;
  • 窗口大小:用于说明本地可接受数据段的数目,窗口大小是可变的;
  • SYN:同步序号位,TCP需要建立连接时将该值设为1;
  • ACK:确认序号位,当该位为1时,用于确认发送方的数据;
  • FIN:当TCP断开连接时该位为1。

3. TCP连接

  3.1 TCP建立连接·三次握手★★★

技术分享图片

 

  • 第一次握手:PC1 给 PC2 发一个 SYN 报文。
  • 首部的同步位SYN=1,初始序号seq=x,SYN=1的报文段不能携带数据,但要消耗掉一个序号。
  • 第二次握手:PC2 收到 PC1 的 SYN 报文之后,会以自己的 SYN 报文作为应答,同时会把 PC1 的 ISN + 1 作为ACK 的值,表示自己已经收到了 PC1 的 SYN。
  • 在确认报文段中SYN=1,ACK=1,确认号ack=x+1,初始序号seq=y。
  • 第三次握手:PC1 收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把 PC2 的 ISN + 1 作为 ACK 的值,表示已经收到了 PC2 的 SYN 报文。
  • 确认报文段ACK=1,确认号ack=y+1,序号seq=x+1(初始为seq=x,第二个报文段所以要+1),ACK报文段可以携带数据,不携带数据则不消耗序号。

  3.2 TCP断开连接·四次挥手★★★

技术分享图片

 

  • 第一次挥手:PC1 发送一个 FIN 报文。
  • 即发出连接释放报文段(FIN=1),并停止再发送数据,主动关闭TCP连接,等待 PC2 的确认。
  • 第二次挥手:PC2 收到 FIN 之后,会发送 ACK 报文,表明已经收到 PC1 的报文了。
  • 即 PC2 收到连接释放报文段后即发出确认报文段(ACK=1),此时的 TCP 处于半关闭状态,PC1 到 PC2 的连接释放。PC1 收到 PC2 的确认后,等待 PC2 发出的连接释放报文段。
  • 第三次挥手:如果 PC2 也想断开连接了,和 PC1 的第一次挥手一样,发送 FIN 报文。
  • 即 PC2 没有要向 PC1 发出的数据,PC2 发出连接释放报文段(FIN=1,ACK=1),等待 PC1 的确认。
  • 第四次挥手:PC1 收到 FIN 之后,一样发送一个 ACK 报文作为应答,需要过一阵子以确保 PC2 收到自己的 ACK 报文之后才会关闭连接,待 PC2 收到 ACK 报文之后,关闭连接。

 

  3.3 TCP半连接、半关闭、半打开的概念

    (1)半关闭:当TCP链接中A向B发送FIN请求关闭,另一端B回应ACK之后,并没有立即发送FIN给A,A处于半连接(半开关)状态,此时A可以接收B发送的数据,但是A已经不能再向B发送数据。
    (2)半连接:发生在TCP三次握手中,如果A向B发起链接,B也按照正常情况响应了,但是A不进行三次握手,这就是半连接。

  • 半连接攻击(SYN攻击):半连接会造成B分配的内存资源就一直这么耗着,直到资源耗尽。

    (3)如果一方关闭或者异常关闭(断电、断网),而另一方并不知情,这样的连接称之为半打开。处于半打开的连接,如果双方不进行数据通信,是发现不了问题的,只有在通信真正察觉到这个连接已经处于半打开状态,如果双方不传输数据的话,仍处于连接状态的一方就不会检测另外一方已经出现异常。

  • 解决方法:引入心跳机制就可以察觉半打开。如果需要发数据的状态下,一方收到以后发现此连接并不存在,就会恢复RST包告知,即重新建立连接。

 

 4. 常用的TCP端口号及其功能★★★

 

端口 协议 说明
21 FTP FTP服务器所开放的控制端口
23 TELNET 用于远程登录,可以远程控制管理目标计算机
25 SMTP SMTP服务器开放的端口,用于发送邮件
80 HTTP 超文本传输协议
110 POP3 用于邮件的接收

 

5. UDP协议

    Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。

  5.1 UDP协议的概念 

    (1)无连接、不可靠的传输协议
    (2)花费的开销小

  5.2 UDP报文的首部格式

技术分享图片

 

    (1)源端口号:表示发送端端口号,字段长为16位。没有源端口时该字段的值为0,可用于不需要返回值的通信中。
    (2)目标端口号:表示接收端端口号,字段长度为16位。4
    (3)UDP长度:该字段保存了UDP首部的长度跟数据的长度之和。
    (4)校验和:校验和是为了提供可靠的UDP首部和数据而设计的。

 

6.常用的UDP端口号及其功能★★★

 

 

端口 协议 说明
69 TFTP 简单文件传输协议
111 RPC 远程过程调用
123 NTP 网络时间协议

Blog.011 传输层协议详解

原文:https://www.cnblogs.com/cityfell/p/14787163.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!