tcp/ip、udp、icmp协议学习笔记

以下文章仅为个人学习笔记,如有错误敬请谅解! 

  •  协议地图

传输层协议:

传输层协议接收来自应用层协议的数据,封装上相应的传输层头部,帮助其建立“端到端”的连接。

传输层的PDU被称为(Segment)常用的协议有tcp、udp等。

tcp协议是一种面向连接的、可靠的(三次握手、四次挥手)传输层通信协议,由IEIF的RFC 793定义。

UDP协议是一种简单的无连接的、不可靠的传输层协议,由IEIF的RFC 768定义。

1.tcp协议

报文格式:

Source Port:源端口号(16bit,2字节)

Destination Port:目的端口(16bit,2字节)

Sequence Number:序列号(32bit),表示发出报文的编号

Acknowledgement Number:确认号(32bit),收到的第几个报文

确认号和序列号保证了数据的有序和正确传输!!!

Data Offset:头部长度

Reserved:保留字段(全填0)

Control bits:(6bit)控制字节,包括URG、ACK(确认)、PSH、RST(重新建立连接)、SYN(连接同步)、FIN(完成发送标识)

Windows:滑动窗口

TCP滑动窗口机制:

在传输数据时,如果对方传输的数据过大,就会将其打包分发,滑动窗口机制就是用来告诉对方自己有几个缓存空间。

图中右边表示接收方三个窗口,其中每个窗口叫做一个mss字段,默认是1460bit。

每个窗口传输独立,如果某个窗口在传输中丢包,对方会将该数据包后面的数据重传,即使在其他窗口已经接受过该数据包,确保数据包的有序性。

 tcp如何建立连接(三次握手):

任何基于tcp的应用,在传输数据前都会进行三次握手(http1.1为了保证网页的响应速度,在多次请求数据时只需一次三次握手就可以实现多次数据传输)

断开连接(四次挥手):

2.udp协议

Source Port: 标识哪个应用程序发送(发送进程)。

Destination Port: 标识哪个应用程序接收(接收进程)。

Length:   UDP首部加上UDP数据的字节数,最小为8。

Checksum: 覆盖UDP首部和UDP数据,是可选的。

data octets:   UDP负载,可选的。

udp 传输数据时双方不进行数据确认,因此是无连接的、非可靠的。

3.ICMP协议:

用来传递差错、控制、查询等信息(例如网页中常见的404、403错误)。

报文格式:

字段长度含义
Type1字节报文类型,用来标识报文。
Code1字节代码,提供报文类型的进一步信息。
Checksum2字节校验和,使用和IP相同的加法校验和算法,但是ICMP校验和仅覆盖ICMP报文。
Message Body可变字段的长度和内容,取决于消息的类型和代码。

(部分type值与code对应的含义) 

类型Type代码Code描述
00回显应答(ping应答)
30网络不可达
31主机不可达
32协议不可达
40源端被关闭
50

对网络重定向

4.ip协议:

IP协议全称为“网际互连协议(Internet Protocol)”,是网络层协议

ip协议是tcp/ip最核心的协议簇,提供不可靠的、无连接的、尽力而为的服务。

IP地址

IP地址一共四组八位的二进制数组成

0000 0000 0000 0000 0000 0000 0000 0000

为了记忆方便,常用点分十进制,如192.168.1.1 

IP地址分为网络号和主机号

掩码:用来标识网络号的位数

例如192.168.1.1和192.168.1.2,假如其掩码是24位(255.255.255.0)

1100 0000 1010 1000 0000 00001 0000 0001

1100 0000 1010 1000 0000 00001 0000 0001

1111 1111 1111 1111 1111 1111 0000 0000

 掩码位为1的所对应的即为网络号,上述中网络号为1100 0000 1010 1000 0000 00001 0000 0000 (192.168.1.0)

除去网络号位置即为主机号,一个网络号即表示一个网段

网段:

网段分为以下几类

  • A类:0.0.0.0到127.255.255.255。
  • B类:128.0.0.0到191.255.255.255。
  • C类:192.0.0.0到223.255.255.255。
  • D类:224.0.0.0到239.255.255.255。
  • E类:240.0.0.0到247.255.255.255。

为了防止上述网段划分产生的地址分配不均(过多或者过少),可以采用可变子网掩码标识网段。

通配符(也有称反掩码的):

表示一个IP地址的集合。例如通配符0.0.0.255,假如对应的ip网段是192.168.1.0,

1100 0000 1010 1000 0000 00001 0000 000

0000 0000 0000 0000 0000 0000 1111 1111

通配符位数为1的位数可以改变,为0不能改变,上述就表示192.168.1.0-255这些地址集合

(和网段的区别是这些地址集合可以不是连续的)

ip报文格式

字段

长度

含义

Version

4比特

  • 4:表示为IPv4;
  • 6:表示为IPv6。

IHL

4比特

首部长度,如果不带Option字段,则为20,最长为60,该值限制了记录路由选项。以4字节为一个单位。

Type of Service

8比特

服务类型。只有在有QoS差分服务要求时这个字段才起作用。

Total Length

16比特

总长度,整个IP数据报的长度,包括首部和数据之和,单位为字节,最长65535,总长度必须不超过最大传输单元MTU。

Identification

16比特

标识,主机每发一个报文,加1,分片重组时会用到该字段。

Flags

3比特

标志位:

 IP Flag字段格式

           0     1      2
        +-----+------+------+
        |  0  |  DF  |  MF  |
        +-----+------+------+
  • Bit 0: 保留位,必须为0。
  • Bit 1: DF(Don't Fragment),能否分片位,0表示可以分片,1表示不能分片。
  • Bit 2: MF(More Fragment),表示是否该报文为最后一片,0表示最后一片,1代表后面还有。

Fragment Offset

13比特

片偏移:分片重组时会用到该字段。表示较长的分组在分片后,某片在原分组中的相对位置。以8个字节为偏移单位。

Time to Live

8比特

生存时间:可经过的最多路由数,即数据包在网络中可通过的路由器数的最大值。

Protocol

8比特

协议:下一层协议。指出此数据包携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给哪个进程处理。

常见值:

  • 0: 保留
  • 1: ICMP, Internet Control Message [RFC792]
  • 2: IGMP, Internet Group Management [RFC1112]
  • 3: GGP, Gateway-to-Gateway [RFC823]
  • 4: IP in IP (encapsulation) [RFC2003]
  • 6: TCP Transmission Control Protocol [RFC793]
  • 17: UDP User Datagram Protocol [RFC768]
  • 20: HMP Host Monitoring Protocol [RFC 869]
  • 27: RDP Reliable Data Protocol [ RFC908 ]
  • 46: RSVP (Reservation Protocol)
  • 47: GRE (General Routing Encapsulation)
  • 50: ESP Encap Security Payload [RFC2406]
  • 51: AH (Authentication Header) [RFC2402]
  • 54: NARP (NBMA Address Resolution Protocol) [RFC1735]
  • 58: IPv6-ICMP (ICMP for IPv6) [RFC1883]
  • 59: IPv6-NoNxt (No Next Header for IPv6) [RFC1883]
  • 60: IPv6-Opts (Destination Options for IPv6) [RFC1883]
  • 89: OSPF (OSPF Version 2) [RFC 1583]
  • 112: VRRP (Virtual Router Redundancy Protocol) [RFC3768]
  • 115: L2TP (Layer Two Tunneling Protocol)
  • 124: ISIS over IPv4
  • 126: CRTP (Combat Radio Transport Protocol)
  • 127: CRUDP (Combat Radio User Protocol)
  • 132: SCTP (Stream Control Transmission Protocol)
  • 136: UDPLite [RFC 3828]
  • 137: MPLS-in-IP [RFC 4023]

Header Checksum

16比特

首部检验和,只检验数据包的首部,不检验数据部分。这里不采用CRC检验码,而采用简单的计算方法。

Source Address

32比特

源IP地址。

Destination Address

32比特

目的IP地址。

Options

可变

选项字段,用来支持排错,测量以及安全等措施,内容丰富(请参见表2)。选项字段长度可变,从1字节到40字节不等,取决于所选项的功能。

Padding

可变

填充字段,全填0。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值