网络常用协议

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 网络常用协议

TCP

TCP报文格式:

Source port(16)源端口

Destination port (16) 目的端口

Sequence number (32):序列号

Acknowledgement number (32):确认号

Header length (4):头部长度

Reserved (6):保留,必须填0,长度为6比特

Control bits (6):控制位。包含FIN、ACK、SYN、URG、PSH、RST等标志位,代表不同状态下的TCP数据段。

Window (16):窗口TCP的流量控制,这个值表明当前接收端可接受的最大的数据总数(以字节为单位)。窗口最大为65535字节。长度为16比特。

Checksum (16):校验和。

Urgent (16):紧急指针,当URG标志为1时才有效。

Options:选项字段,长度为0-40字节,可扩充TCP长度。决定TCP最长长度,为60字节。

Data (varies)

TCP的序列号和确认号:

序列号seq:TCP通信过程中某一个传输方向上的字节流的每个字节的序号,通过这个来确认发送的数据有序,比如现在序列号为a,下个序列号就是a+1

确认号ack:TCP对上一次seq序号做出的确认号,用来响应TCP报文段,给收到的TCP报文段的序号seq加1。带SYN和FIN的,确认号在序列号基础上+1

TCP的标志位:

  1. SYN:简写为S,同步标志位,用于建立会话连接,同步序列号;
  2. ACK: 简写为.,确认标志位,对已接收的数据包进行确认;
  3. FIN: 简写为F,完成标志位,表示我已经没有数据要发送了,即将关闭连接;
  4. PSH:简写为P,推送标志位,表示该数据包被对方接收后应立即交给上层应用,而不在缓冲区排队;
  5. RST:简写为R,重置标志位,用于连接复位、拒绝错误和非法的数据包;
  6. URG:简写为U,紧急标志位,表示数据包的紧急指针域有效,用来保证连接不被阻断,并督促中间设备尽快处理;

TCP三次握手建立连接:

  • 第一次握手
    PC1将TCP报文标志位SYN置为1,随机产生一个序号值seq=a,保存在TCP首部的序列号(Sequence Number)字段里,因为没收到过来自PC2的任何报文,所以确认序列号为0 ;指明PC1打算连接的PC2的端口,并将该数据包发送给PC2,发送完毕后,PC1进入SYN_SENT状态,等待PC2确认。



  • 第二次握手
    初始序列号b为一个随机生成的数字,同时因为此报文是回复给PC1的报文,所以确认序列号为a+1;PC2收到数据包后由标志位SYN=1知道PC1请求建立连接,服务器端将TCP报文标志位SYN和ACK都置为1,ack=a+1,随机产生一个序号值seq=b,并将该数据包发送给PC1以确认连接请求,PC2进入SYN_RCVD状态。



  • 第三次握手
    PC1接收到PC2发送的SYN和ACK置位的TCP报文后,回复一个ACK置位的报文,此时序列号为a+1,确认号为b+1。PC2收到之后,TCP双向连接建立。

  • 注意:我们上面写的ack和ACK,不是同一个概念:
  • 小写的ack代表的是头部的确认号Acknowledge number, 缩写ack,是对上一个包的序号进行确认的号,ack=seq+1。
  • 大写的ACK,则是我们上面说的TCP首部的标志位,用于标志的TCP包是否对上一个包进行了确认操作,如果确认了,则把ACK标志位设置成1。

我们看下实战中TCP的三次握手过程:

  • 第一次握手,客户端51323端口号向服务器端80号端口发起连接,此时标志位flags=S,即SYN=1标志,表示向服务端发起连接的请求,同时生成序列号seq=84689409
  • 第二次握手,服务端标志位flags=[S.],即SYN+ACK标志位设置为1,表示对上一个请求连接的报文进行确认,同时设置ack=seq+1=84689410,生成序列号seq=1893430205。
  • 第三次握手,客户端对服务端的响应进行确认,所以此时标志位是[.]即ACK=1,同时返回对上一个报文的seq的确认号,ack=1893430206

TCP的数据传输的过程

PC1首先发送报文,seq=a+1,ack=b+1,载荷长度为12字节。

PC2收到后,对PC的报文回复确认报文,seq=b+1,ack=a+1+12,确认的是PC1发给PC2的报文序列号。

PC1收到后PC2的确认报文后,又给PC2发送一个报文,seq=a+1+12,ack=b+1,载荷长度为66字节。

PC2收到后,回复PC1确认报文,seq=b+1,ack=a+12+1+66。

TCP的四次挥手

  1. 由PC1发出一个FIN字段置”1 ”的不带数据的TCP段;
  2. PC2收到PC1发来的FIN置位的TCP报文后,会回复一个ACK置位的TCP报文。
  3. 若PC2也没有需要发送的数据,则直接发送FIN置位的TCP报文。假设此时PC2还有数据要发送,那么当PC2发送完这些数据之后会发送一个FIN置位的TCP报文去关闭连接。
  4. PC1收到FIN置位的TCP报文,回复ACK报文,TCP双向连接断开。

TCP滑动窗口机制

1. TCP在滑动窗口的基础上提供流量控制,防止较快主机致使较慢主机的缓冲区溢出,主要是根据网络情况动态调整窗口大小

2. TCP将数据分段发送,确保发送的数据到达接收端也是正确的。利用的是“空洞”。TCP不会对每个数据包都返回ACK,而是累计返回的。

一文看懂TCP滑动窗口原理

https://zhuanlan.zhihu.com/p/571726228

UDP

不可靠的,无连接的。

Source Port:源端口,标识哪个应用程序发送。长度为16比特。

Destination Port:目的端口,标识哪个应用程序接收。长度为16比特。

Length:该字段指定UDP报头和数据总共占用的长度。可能的最小长度是8字节,因为UDP报头已经占用了8字节。由于这个字段的存在,UDP报文总长不可能超过65535字节(包括8字节的报头,和65527字节的数据)。

Checksum:覆盖UDP头部和UDP数据的校验和,长度为16比特。

ARP

是根据IP地址获取物理地址的一个TCP/IP协议。

ARP工作过程:

假设主机A和主机B是同网段。

  1. 主机A首先查看自己的ARP缓存表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
  2. 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
  3. 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
  4. 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。

ARP请求的目的MAC地址一开始为0,因为并不知道目的地址的MAC地址,而在传输ARP请求时,封装成帧后的MAC地址帧设成全F,表示这是一个广播包。因此ARP请求包的目的MAC地址是全0,封装成帧之后为全F。

ARP表

ARP表项分为ARP静态表和ARP动态表。

ARP静态表可以使用arp static ip地址 mac地址来设置,静态表没有老化时间。

ARP动态表的老化时间是20分钟,思科是5分钟。

免费ARP

免费ARP  地址冲突检测。

工作过程:

发送源IP,目的IP均为自己的ARP报文,如果没有收到arp响应,则不存在冲突;如果收到了arp响应,则表示该地址已被其他主机占用。

产生免费arp的场景:

  1. 主机手动配置IP地址时;
  2. DHCP服务器在分发地址的最后一个阶段,会发送免费arp探测该地址是否可用;
  3. VRRP在进行主备网关切换时需要发送免费ARP刷新下游设备的MAC表, 杜绝流量向错误的端口转发;

ICMP

报文由type、code等构成

Internet控制消息协议ICMP,是IP协议的辅助协议。

ICMP协议用来在网络设备间传递各种差错和控制信息,用于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。

ICMP消息封装在IP报文中,IP报文头部Protocol值为1时表示ICMP协议。

ping就是基于ICMP协议 ——Echo request type(8) code(0)

Echo reply type(0) code(0)

ICMP重定向

ICMP重定向报文是ICMP控制报文的一种。在特定的情况下,当路由器检测到一台机器使用非最优路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。

ICMP重定向过程:

1.主机A希望发送报文到服务器A,于是根据配置的默认网关地址向网关RTB发送报文。

2.网关RTB收到报文后,检查报文信息,发现报文应该转发到与源主机在同一网段的另一个网关设备RTA,此转发路径是更优的路径,所以RTB会向主机发送一个Redirect消息,通知主机直接向另一个网关RTA发送该报文。

3.主机收到Redirect消息后,会向RTA发送报文,然后RTA会将该报文再转发给服务器A。

ICMP差错检测

ICMP Echo消息常用于诊断和目的地之间的网络连通性,同时还可以提供其他消息,如报文往返时间等。

功能:Ping

ping是网络设备、Windows、Linux和Unix平台上的一个命令,其实是一个小巧而实用的应用程序,该应用基于ICMP协议。Ping常用于探测到达目的节点的网络可达性。

ICMP错误报告

ICMP定义了各种错误消息,用于诊断网络连接性问题;根据这些错误消息,源设备可以判断出数据传输失败的原因。如:当网络设备无法访问目标网络时,会自动发送ICMP目的不可达报文到发送端设备。

功能:Tracert

tracert基于报头中的TTL值来逐跳跟踪报文的转发路径。tracert是检测网络丢包和时延的有效手段,同时还可以发现网络中的路由环路。

Tracert

简单网络诊断工具,探测数据包从源地址到目的地址经过的路由器IP地址

1.进行tracert的主机或者设备(R1)最开始发送UDP包(源IP自己,目的IP目标,TTL=1,一个特殊的随机的端口号,一般很大)

2.R2收到R1发送的TTL为1的UDP包,TTL-1=0,则丢包并且ICMP马上向R1发送一个超时的报错包,并且在ICMP数据部分带上R2的接口IP地址,起始路由器收到TTL超时报错包后从ICMP数据种就探测到了下一跳IP地址

3.第二跳则发TTL=2的UDP包,可以探测到R1到R3的路径IP地址,R3则向R1发送超时包。

4.以此类推,但是到探测最后一跳时候,TTL=0,但是数据包已经到了目的地,这时候是不会有超时报错的,那么怎么判断是否到达目的地了呢?别忘了,我们的tracert包协带了特殊的端口号,而且一般很大,并且没发一个UDP则增长1,这么大的端口一般的设备都不会开启,那么在最后一跳虽然TTL不会超时报错,但是会有端口不可达的报错,所以最后三个报错包为端口不可达的ICMP报错包。

R1pingR6

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
4天前
|
负载均衡 网络协议 算法
|
2月前
|
域名解析 存储 网络协议
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
本文详细介绍了IP协议报头结构及其各字段的功能,包括版本、首部长度、服务类型、总长度、标识、片偏移、标志、生存时间(TTL)、协议、首部检验和等内容。此外,还探讨了IP地址的网段划分、特殊IP地址的应用场景,以及路由选择的大致流程。最后,文章简要介绍了DNS协议的作用及其发展历史,解释了域名解析系统的工作原理。
111 5
深入解析网络通信关键要素:IP 协议、DNS 及相关技术
用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码
用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码
|
2月前
|
缓存 算法 物联网
基于AODV和leach协议的自组网络平台matlab仿真,对比吞吐量,负荷,丢包率,剩余节点个数,节点消耗能量
本系统基于MATLAB 2017b,对AODV与LEACH自组网进行了升级仿真,新增运动节点路由测试,修正丢包率统计。AODV是一种按需路由协议,结合DSDV和DSR,支持动态路由。程序包含参数设置、消息收发等功能模块,通过GUI界面配置节点数量、仿真时间和路由协议等参数,并计算网络性能指标。 该代码实现了节点能量管理、簇头选举、路由发现等功能,并统计了网络性能指标。
162 73
|
7天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
32 13
|
6天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
7天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
1月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
141 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
9天前
|
网络协议 安全 NoSQL
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
|
29天前
|
网络协议 网络虚拟化 网络架构
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(上)
【网络实验】/主机/路由器/交换机/网关/路由协议/RIP+OSPF/DHCP(上)
55 1

热门文章

最新文章