一,OSI参考模型——开放式的系统互联参考模型
全称:OSI/RM七层参考模型
ISO——国际标准化组织
(1)产生背景
各大厂商之间的设备是不兼容的;
各大厂商都有自己的协议;
用户购买,维护设备的成本过高
(2)每层作用
物 数 网 传 会 表 应
应用层——为应用程序提供网络服务
表示层——定义了数据的格式,对数据进行加密,解密,压缩,解压缩;
会话层——建立,维护,拆除通信双方的会话 -session idd;
传输层——建立 端到端 的连接(逻辑上的连接)--依靠端口号
端口号的取值范围 0-65535 ,其中0和65535是系统保留的端口号(16位二进制构成)
知名端口号:1-1023 固定分配给协议和服务了
动态端口号:1024-65534
DNS:域名解析服务
HTTP协议:超文本传输协议
POP:邮局协议, POP3 为POP的第三版本,发送邮件的时候
SMTP:简单邮件传输协议:接收方
FTP协议:文件传输协议,端口号为:20/21
SSH:安全的远程登陆 端口号:22
Telent:远程登陆服务 23
DHCP协议:动态主机配置协议 67,68
网络层:网络IP地址寻址,路由器是网络层设备(3层设备)
数据链路层:MAC寻址,交换机一般是2层设备,封装成帧,差错检测,流量控制
LLC子层:逻辑链路控制子层,为数据的传输提供一个可靠性的保证,减少数据帧出现丢失,重复,失序 (保证数据的完整性)
MAC子层:媒体接入控制子层,识别网络层的协议
物理层:传输电信号,传输比特流,定义了一些参数的标准(定义了电压,接口,线缆标准 ,传输介质,信号传输模式的标准)
信号传输模式:单工模式:同一时刻,只能有一个设备收或发消息(听收音机广播)
半双工模式:同一时刻,只有一段的设备都可收发消息(传呼机)
全双工模式:同一时刻,两端都可以同时收发消息
(3)通讯过程(封装与解封装)
封装:在原始数据的基础上,添加一些字段信息,形成新的数据
解封装:拆掉封装的额外信息,欢迎成原始数据的数据
过程:发送端:数据从上到下逐层封装
接收端:数据从下到上逐层解封装
OSI分层的好处:
各层协作,完整的传输数据
各层功能独立,能快速定位故障的问题
分层意义:
1.利于标准化;
2.降低层次之间的关联性—每一层协议的增加或者减少,尽量不要影响 其他层次,每一层都只执行对应的功能。
每一层都在上层的基础上提供增值服务。
二,TCP/IP参考模型——传输控控制协议/互联网协议
(1)产生背景
1.OSI抢占市场失败
2.OSI划分的层次太多,会话层和表示层存在的意义不大
(2)模型类型及区别
(3)通讯过程(封装与解封装)
PDU:协议数据单元
三,TCP/IP协议簇及抓包分析
1.TCP协议——传输控制协议(网络层)
(1)头部:
32位序号:标识本机发送的数据报文的编号
32位确认序号:标识收到了对方的消息,请求对方下次发送的数据报文的编号
首部长度:数据偏移,标识数据分段在完整数据中的位置
6位保留:留给将来要开发的功能去使用
16窗口大小:通告本机的接受能力
1字节=8位 1Byte=8bit
16位校验和:
(2)TCP的可靠机制:
ACK=上一次的seq+上一次的len
seq=上一次的Ack
滑动窗口机制:通过窗口大小,通告本机的接受能力,从而实现流量控制
完整性校验机制:通过checkm字段,实现对数据包完整性的校验
(3)TCP协议的特点:
面向连接,可靠协议;
有流量控制机制;
保证数据的完整性;
进行数据分段;
(4)使用场景:
对传输效率要求地,准确性要求高的场景
四,IP协议——网络层事实上的,标准的,唯一的协议
(1)IP头部格式
(2)tcp分段和分片
TCP分段:MSS--最大数据分段长度,1460字节
IP分片:MTU--最大传输单元,1500字节
五,ICMP协议--网际保温控制协议
(1)头部
ping命令:ICMP协议的执行者 通过ping
Echo reply : ping命令回复
网络不可达:网络故障
主机不可达 : 寻找的ip地址有问题
协议不可达 :协议不兼容
端口不可达 : 防火墙禁Ping服务,端口不连通
六,以太网帧协议(数据链路层)
(1)头部
FCS :MAC帧的尾部,帧校验序列
帧开始定界符:标识数据帧的开始
七,OSI七层模型的功能对照TCP/IP的协议
八,TCP和UDP的对比
TCP和UDP
1.TCP是面向连接的协议,而UDP是不连接的协议;
2.TCP的传输是可靠的传输,——排序,确认,重传,流控。而UDP是不可靠的;
3.TCP可以分段,而UDP不能;
4.TCP可以进行流控,而UDP不能;
5.TCP转发数据的效率比较低,UDP的转发效率比较高;
MSS——MTU—IP协议报头的长度(最小)—1480字节
MTU——最大传输单元——1500字节
视频聊天——UDP——对于数据可靠性要求比较低,但是对应实时性要求高的场景下使用UDP。
TCP——对于数据可靠性要求高,但是对应是实现要求相对较低的场景下使用。
TCP报头最小——20字节。
源端口: 占16比特,用来 标识发送该TCP报文段的应用进程。
目的端口: 占16比特,用来标识接收该TCP报文段的应用进程。
序号: 占32比特,取值范围[0,2^32-1],序号增加到最后一个后,下一个序号就又回到0。指出本TCP报文段数据载荷的第一个字节的序号。
确认号: 占32比特,取值范围[0,2^32-1],确认号增加到最后一个后,下一个确认号就又回到0。指出期望收到对方下一个TCP报文段的数据载荷的第一个字节的序号,同时也是对之前收到的所有数据的确认。若确认号=n,则表明到序号n-1为止的所有数据都已正确接收,期望接收序号为n的数据。
确认标志位ACK: 取值为1时确认号字段才有效;取值为0时确认号字段无效。TCP规定,在连接建立后所有传送的TCP报文段都必须把ACK置1。
数据偏移: 占4比特,并以4字节为单位。用来指出TCP报文段的数据载荷部分的起始处距离TCP报文段的起始处有多远。这个字段实际上是指出了TCP报文段的首部长度。
窗口: 占16比特,以字节为单位。指出发送本报文段的一方的接收窗。
同步标志位SYN: 在TCP连接建立时用来同步序号。终止标志位FIN: 用来释放TCP连接。复位标志位RST: 用来复位TCP连接。
推送标志位PSH: 接收方的TCP收到该标志位为1的报文段会尽快上交应用进程,而不必等到接收缓存都填满后再向上交付。
校验和: 占16比特,检查范围包括TCP报文段的首部和数据载荷两部分。在计算校验和时,要在TCP报文段的前面加上12字节的伪首部。
紧急指针: 占16比特,以字节为单位,用来指明紧急数据的长度。
填充: 由于选项的长度可变,因此使用填充来 确保报文段首部能被4整除,(因为数据偏移字段,也就是首部长度字段,是以4字节为单位的)
TCP的三次握手:
采用三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误。