组成 : 物理层、数据链路层、 网络层 、 传输层、应用层
<1> 物理层:
- 传输比特流
- 依赖物理(电气)特性
<2> 数据链路层:
- 主要作用有三个: 封装成帧 、 透明传输、 差值校验
- 报文结构 : 目的地址 、 源地址 、 类型 、 数据 、 FCS
常用类型:{
IPv4:0x0800
ARP:0x8035
IPV6:0x86DD
}
FCS :{
差错校验
}
<3> 网络层(Internet Protocol)
- 主要作用: 路由、 转发
- 报文结构 :版本号、 头部长度、服务类型、 总长度 、标识、 标志位 、分片偏移、 生存时间、 协议、 首部检验和、 源IP、 目的IP、可选项 、 填充、 数据
版本号:{
一般为IPv4 少部分人用IPv6, 两个节点传输时版本必须一致。
}
服务类型:{
ip报文头的长度,最小20个字节,最大60个字节
}
服务类型:{
共八位 : 前三位标识报文的优先级,后边表示 : 时延 、吞吐量、 路由代价等
}
总长度:{
包括报文头和数据的总长度,最大65535字节
}
标识:{
数据包的标识:标识切片后的数据包位于完整的数据包的位置
}
标志位:{
共三位 : 第一个位为0时表示该分片是最后一个,为1时后边还有。第二位为0表示可以分片,为1时不能分片
}
分片偏移:{
指示本分片数据在初始数据报数据区中的偏移量,偏移量以8 Byte为单位,重组时分片顺序由片偏移提供。
}
生存时间:{
TTL:用来控制数据包在网络中传输的距离,没经过一个节点TTL会减一,直到为0时该包被丢弃。可以避免数据包在网络中死循环
}
协议:{
表示是哪个上层协议封装的,常见的有TCP、UDP
}
首部检验和:{
用来保证IP头部的完整性
}
<4> 传输层
-
基本功能:提供端到端的服务; 按端口寻址、 数据分割与重组、连接管理、差错管理和流量控制
-
协议:TCP、 UDP
-
TCP/UDP 主要特点:{
TCP:面向连接的、可靠的、 具有拥塞控制的、全双工通信、一对一的
UDP: 不需连接、不可靠、没有拥塞控制、 不可靠信道、 可以一对多、速度快
} -
TCP报文结构:源端口、 目的端口、 同步序列号、 确认序列号 、偏移量、保留、六个标志位、 滑动窗口、检验和、紧急指针、可选项、 填充、 数据
源端口:{
发送方的端口号
}
目的端口:{
接收端端口号
}
同步序列号:{
序号是本报文段发送的数据组的第一个字节的序号。在TCP传送的流中,每一个字节一个序号,确保了TCP传输的有序性
}
确认序列号:{
指明下一个期待收到的字节序号,表明该序号之前的所有数据已经正确无误的收到
}
偏移量:{
也叫首部长度,首部长度实际上指示了数据区在报文段中的起始偏移值
}
六个标志位:{
URG:紧急指针,为1表示紧急指针有效
ACK: 确认号有效否,为1时表示有效,为0时表示无效或忽略。
psh: push标志,是否在缓冲区停留,为1时应尽快交给应用程序
rst: 重置连接位,为1时,重置错误的连接或者拒绝连接请求
syn: 用于建立连接时。
fin : 用于断开连接时。
}
滑动窗口:{
用来告知,接收端的缓冲区的大小,从而控制传输的速率,来达到流量控制的目的
}
校验和:{
tcp头部和数据的大小,发送端计算和存储,接收端进行校验。
}
紧急指针:{
URG置1时有效,用来控制发送端向接收端发送紧急数据的一种方式
}
可选项:{
最常见的可选项字段是最大报文长度 MSS,通常在建立连接时的第一个报文中指明这个字段,不一定是32的整数倍所以要加填充
} -
三次握手:
客户端向服务器发送了一个syn报文,(SYN=1,seq=j)
服务器向客户端发送了一个ack报文,(SYN=1,ACK=1,ack=j+1,seq=k)
客户端向服务器发送了一个ack报文,(SYN=0,ACK=1,ack=k+1) -
四次挥手:
客户端给服务器发送了一个fin报文,(FIN=1,seq=w)
服务器给客户端发了一个ack报文,(ACK=1,seq=w+1)
服务器给客户端发了一个fin报文,(FIN=1,seq=r)
服务器给客户端发了一个ack报文,(ACK=1,seq=r+1)
<5> 应用层
- 跟应用程序相关的协议
- 主要的协议:{
文件传输: ftp(文件传输协议)、tftp(简单的文件传输协议)
邮件相关: smtp(简单的邮件传输协议)、 pop3(邮局协议3)、 IMAP(邮件访问协议)
文本传输: http(超文本传输协议) https(安全的超文本传输协议)
snmp : 简单的网络管理协议
远程登录:SNMP(电信网络协议)、 ssh(安全外壳协议)
}