一、网络层
IP报文头部
- 版本 :IPv4、IPv6
- 头部长度(20-60字节):IP数据报长度,因为长度可变,需要定义。
- 优先级和服务类型:共8位,包括一个三位的优先权字段(COS)和四位的TOS字段和一位保留字段,其中四位TOS字段分别表示最小时时延、最大吞吐量、最高可靠性、最小费用
- 总长度:IP数据包总长度
IP分片:
设备之间相互传输数据不能超过最大传输单元
(MTU:在以太网中,MTU值为:46-1500)
-
标识字段:作用相当于序号,假设第一个分片的报文序号随机为X,则后续的每个报文+1
-
标志位(3bit):第一位保留,取值为0;第二位(DF)代表报文是否可以被分片,取值为0表示可以分片,取值为1表示不能被分片;第三位(MF)代表该报文是否为最后一片报文,0代表最后一片,1代表后面还有分片
-
偏移字段:表示相对位置,单位为8字节
计算:一个数据段长度为5000字节,MTU=1500,分出了多少片,每个报文的标识字段,标志位和片偏移是多少
-
TTL:生命周期字段,防止一个数据包在网络中无线循环下去,每经过一个路由器时数值减1,当TTL=0时,数据包丢弃
-
协议号:上层使用的协议;ICMP:1;TCP:6;UDP:17
-
首部校验和:检验IP头部的完整性
二、传输层
端口号:标识不同的进程
- 静态端口号:1-1023—>固定给网络上常见的某个协议使用
服务 | 端口 |
---|---|
telnnet | 23 |
ftp | 20/21 |
http | 80 |
dns | 53 |
https | 443 |
dhcp | 67/68 |
- 动态端口:1024-65535—>某些协议自动随机生成的端口
1、TCP协议—传输控制协议
是一种面向连接的可靠传输协议
- 源端口号
- 目标端口号
- 序列号:TCP会话的每一端都包含一个32位(bit)的序列号,该序列号被用来跟踪该端发送的数据量。每一个包中都包含序列号,在接收端则通过确认号用来通知发送端数据成功接收。
- 确认序列号:用于确认发送端的信息
- 数据偏移:类似IP报文中的偏移字段
- 保留字段
- 标志字段:
字段 | 意义 |
---|---|
紧急位(URG) | 发送进程将紧急位URG置1,表示该报文段的优先级高,需要插到报文段的最前面,尽快发送。URG位要与紧急指针字段一起使用 |
确认位(ACK) | 按照TCP的规定,在TCP连接建立之后发送的所有报文段的ACK位都要置1 |
推送位(PSH) | 当两个进程进行交互式通信时,一端应用进程希望在输入一个命令后,能立即得到对方的响应时,就将PSH置1,并立即创建一个报文段传送给对方,对方接收到PSH置1的报文段后,就尽快交给应用进程,请求尽快应答。 |
复位位(RST) | 复位RST置1 ,有两种含义:1、因主机崩溃等原因造成TCP连接出错,需要立即释放连接,然后重建连接 2、拒绝非法TCP报文或拒绝释放一个连接 |
同步位(SYN) | 同步位SYN在连接建立时同步序号 |
终止位(FIN) | 终止位用来释放一个TCP连接 |
- 窗口大小:窗口字段值是准备接收下一个TCP报文段的接收端,通知即将发送报文的发送端,下一次最多可以发送报文段的字节数
- 校验和:长度为16位,共2个字节。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,接收端用于对收到的数据包进行验证
- 紧急指针:只有当URG标志置1时紧急指针才有效。紧急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号
TCP协议的可靠性机制
- 确认机制:每收到一个数据段,都需要进行一次确认
- 重传机制:当一个数据段中的某个包丢失,发出者都会重新发送这个报文
- 排序机制:传输一个数据段,被分为多个报文后从不同的路径传输,最终到达目的地顺序会被打乱,所以需要重新排序,依靠TCP首部的序列号字段进行排序
- 流控机制(滑动窗口机制):调节窗口大小来进行流量控制—窗口大小:指无需等待确认就可以连续发送数据的最大量
TCP分段
用来代替IP分片
MSS(最大传输段)=MTU-IP头部-TCP头部
经过TCP分段的数据在传输过程中不允许进行IP分片
面向连接
- 三次握手
第一次握手:客户端向服务端发送一个TCP的SYN标志位为1和随机生成的初始序号seq=x的“连接建立请求报文”,“连接建立请求报文”不携带数据字段,随机生成的初始序号保存在包头的序列号(sequence number)字段里
第二次握手:服务端收到客户端发送的“连接建立请求报文”后,如果同意建立连接,则向客户端发送标志位SYN=1,ACK=1的“连接建立请求确认报文”,确认号ack=x+1表示对客户端发送的“连接建立请求报文”的确认,服务端也会随机生成一个初始序列号seq=y
第三次握手:客户端再次发送标志位ACK=1的确认报文,确认序列号为ack=y+1,序列号seq=x+1
- 四次挥手
第一次挥手:当客户端完成一次数据传输,主动提出释放TCP连接时,它会向服务端发送一个标志位FIN=1和随机生成的序列号seq=u的“连接释放请求报文”
第二次挥手:服务端接收到“连接释放请求报文”后会向客户端发送标志位ACK=1,序列号seq=v,确认序列号ack=u+1的“连接释放请求确认报文”
此时客户端到服务端的TCP连接断开,但是,服务端到客户端的TCP连接还没有断开服务端可以继续发送数据报文直至完毕
第三次挥手:服务端向客户端发送标志位FIN=1,ACK=1,确认序列号ack=u+1,随机序列号seq=w的“连接释放请求报文”
第四次挥手:客户端收到服务端发送的“连接释放请求报文”,向服务端发送一个标志位ACK=1,seq=u+1,ack=w+1的确认报文
2、UDP协议—用户数据报协议
是一种面向非连接的不可靠传输协议
TCP与UDP的区别
- TCP协议是面向连接的,而UDP协议是面向无连接
- TCP协议是可靠的,而UDP是不可靠的
- TCP具备流量控制和拥塞控制,而UDP没有
- TCP可以分段
- TCP消耗的资源多,速度慢;UDP消耗资源少,速度快
ICMP解析
用来在网络设备间传递各种差错、控制,查询等信息,对于收集各种网络信息、诊断和排除各种网络故障
ping—检测网络联通性
-a 指定ping包中的源IP地址,如果不指定源IP地址,则采用出接口的IP地址作为报文源IP
-c(-n/-t) 指定发送报文次数,缺省情况下是五次
-h 指定TTL值,缺省为255
tracert—逐跳检测追踪报文的转发路径
三、Telnet
telnet是基于TCP协议的,端口号23
客户端配置
<Huawei>system-view
[Huawei]sysname client
[client]int g0/0/0
[client-GigabitEthernet0/0/0]ip address 192.168.1.1 24
服务端配置
<Huawei>system-view
[Huawei]sysname server
[server]int g0/0/0
[server-GigabitEthernet0/0/0]ip address 192.168.1.2 24
[server]user-interface vty 0 4
[server-ui-vty0-4]authentication-mode aaa
[server]aaa
[server-aaa]local-user huawei password cipher 123
[server-aaa]local-user huawei privilege 15
[server-aaa]local-user huawei service-type telnet
测试: