传输层概念

20byte = 4 byte(32) * 5
UDP头部仅需要8字节 4 * 2
MTU网络帧的最大长度,要小于1472

b 传输层简单介绍

面向连接和无连接

面向连接:计算机之前要维护一个连接
无连接:单向发送数据包,不承担通知目的计算机接受数据的职责

端口和套接字

应用程序可以通过TCP/UDP向指定端口发送数据,达到向目的应用程序发送数据。

常用tcp端口列表

更多地址

1 tcpmux TCP
5 rje 远程作业入口
7 echo Echo 服务
9 discard 用于连接测试的空服务
11 systat 用于列举连接了的端口的系统状态
13 daytime 给请求主机发送日期和时间
17 qotd 给连接了的主机发送每日格言
18 msp 消息发送协议
19 chargen 字符生成服务
20 ftp -data FTP 数据端口
21 ftp 文件传输协议
22 ssh 安全
23 telnet Telnet
25 smtp 简单邮件传输协议

多路复用/分解

多路复用的关键就是端口号,依靠端口号准确无误的发送数据

TCP

TCP特性

  • 面向流的处理
  • 重新组装排序
  • 流量与安全
  • 优先与安全

TCP数据格式

下来的交互流程中会对照解释这些字段

b 传输层简单介绍
b 传输层简单介绍

  • 源端口、目的端口
    16位 256*256 =65536
  • *** 32
    SYN标记不为1,这就是当前数据分段第一个字节的***,如果SYN为1,这个字段的初始值就是初始序列值(ISN)由于对***同步,这是第一个字节***比这个字段的值大1(ISN+1)
序号
SYN != 1 第一个字节***
SYN ==1 ISN,ISN+1
  • 确认号
    用于接受已经收到的数据分段,其值就是计算机即将接受到的下一个***,也就是上一个接受到的字节的***+1。
  • 数据偏移
    4位首部长度,这个字段表示报头的长度。也就告诉我们接收端的TCP软件数据从何开始,这个值得单位是32位的字。
  • 保留
    为TCP未来发展的保留字段,必须全为0。
  • URG
    为1时表示当前的数据分段是紧急的,也会让紧急指针字段的值有意义
  • ACK
    为1时表示确认号是有意义的
  • PSH
    为1时表示TCP软件把目前收到的全部数据都通过管道传递给接受应用程序
  • RST
    为1时会重置连接
  • SYN
    为1时表示***将被同步,说明这是一个连接的开始
  • FIN
    为1时表示计算机已经没有数据发送
  • 窗口
    用于流量控制参数,它定义了发送计算机的发送***可以超过最后一个已确认***的数量。也就是说,发送方不必等待每个数据段被准确的接受收才发下一个数据分段,允许已接确认接收到的***与正在发送的***有一定差别,但必须在适当的范围
  • 校验和
    用于检查数据分段的完整性,接收端计算机会根据接受到的数据计算校验和,并且把结构和这个字段比较。TCP/UDP在计算校验和时包含一个具有IP地址的伪报头
  • 紧急指针
    这是一个偏移量指针,指向标记紧急信号开始的***
  • 选项
    指定一些可选设置中的某一项
  • 填充
    填充额外的0
  • 数据
    数据分段中的数据

TCP交互流程

三次握手建立连接、四次握手断开连接

  • 被动打开
    被通知去建立TCP连接,去传给应用程序数据
  • 主动打开
    通知别人主动去建立连接。通常服务器都是监听端口,等待别人建立连接。

相互传数据时计算机a、b都必须知道对方的ISN(初始***)
a去向b发送请求建立连接

建立连接

详细
b 传输层简单介绍

step1:
A主动发送消息,SYN=1(数据的开始),(确认字段)ACK=0,***seq(当前A接受数据的位置)。然后就进入SYN-SENT字段。
step2:
服务端B,接受到消息后。SYN设为1,ACK设为X+1。***为y(b的接受)
step3:
seq设置为X+1,ACK为Y+1

断开连接

b 传输层简单介绍
step1:
客户端发送一个报文给服务端(没有数据),其中FIN设置为1,Sequence Number置为u,客户端进入FIN_WAIT_1状态
step3:
服务端收到来自客户端的请求,发送一个ACK给客户端,Acknowledge置为u+1,同时发送Sequence Number为v,服务端年进入CLOSE_WAIT状态
step3:
服务端发送一个FIN给客户端,ACK置为1,Sequence置为w,Acknowledge置为u+1,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态
step3:
客户端收到FIN后,进入TIME_WAIT状态,接着发送一个ACK给服务端,Acknowledge置为w+1,Sequence Number置为u+1,最后客户端和服务端都进入CLOSED状态

秒懂图

可以看见,依赖ACK去标识
b 传输层简单介绍

UDP

UDP十分简单是广播协议默认传输协议。User Datagram Protocol

协议格式

b 传输层简单介绍

伪包头

b 传输层简单介绍
UDP和TCP都是
伪首部, 又称为伪包头(Pseudo Header):是指在 TCP 的分段或 UDP 的数据报格式中,在数据报首部前面增加源 IP 地址、目的 IP 地址、IP 分组的协议字段、TCP 或 UDP 数据报的总长度等共12字节,所构成的扩展首部结构。此伪首部是一个临时的结构,它既不向上也不向下传递,仅仅只是为了保证可以校验套接字的正确性。

防火墙

防火墙就是TCP/UDP层

wireshake的使用

格式查看

https://www.cnblogs.com/mq0036/p/11187138.html
b 传输层简单介绍

按照source和dest过滤

ip.dst192.168.101.8;查找源地址为ip.src1.1.1.1;

&& || !

相关文章:

  • 2021-11-17
  • 2021-05-15
猜你喜欢
  • 2021-06-29
  • 2021-04-05
  • 2022-01-30
  • 2021-12-18
相关资源
相似解决方案