1. 为什么要有网络参考模型
各司其职,提高效率,有利于技术的发展和故障排查。
2. OSI参考模型
2.1 应用层
是面向用户的APP,承载用户的数据,微信聊天的文字、图片,抖音观看的视频等都属于应用层数据。
2.2 表示层
计算机用自己的编码方式,对用户的数据进行编码。如用ipeg编码方式来表示各种图片数据,用MP3编码方式来表示各种声音数据。当然,某公司为了安全起见也可以独创一套只要自己才能识别的编码方式来表示数据。
2.3 会话层
两个程序之间的接口。如美团 APP 可以调用微信支付,就是通过二者之间的会话层接口。
2.4 传输层——PORT
用于建立TCP和UDP连接,并给数据报文打上端口号。
TCP或UDP的连接区别是,TCP 传输可靠性高但是速度慢延迟高,UDP 刚好相反。根据不同的应用场景按需选择。
给报文打上端口号的作用是,接收方可以识别报文属于什么应用程序,如 80 是网页的数据,4000 是 QQ 的数据。
2.5 网络层——IP
给数据包打上IP地址,用于路由转发。有了IP地址,网络设备才知道数据包应该发往互联网上的那个位置。
2.6 数据链路层——MAC
给数据包打上MAC 地址,MAC 地址是两个直连节点通信的方式。如多台电脑连接在交换机上,交换机给其中一台电脑发数据的时候,必须知道这合电脑的 MAC地址。
MAC地址是交换机用来寻找主机的标志。
2.7 物理层
把封装好的数据包用物理信号来表示
3. TCP/IP参考模型
4. 各层常见协议
4.1 应用层
HTTP:超文本传输协议,提供浏览网页服务。
Telnet:远程登录协议,提供远程管理服务。
FTP:文件传输协议,提供互联网文件资源共享服务。
SMTP:简单邮件传输协议,提供互联网电子邮件服务。
TFTP:简单文件传输协议,提供简单的文件传输服务。
4.2 传输层
TCP:为应用程序提供可靠的面向连接的通信服务。
UDP:提供了无连接通信,且不对传送数据包进行可靠性的保证。
4.3 网络层
IP:将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务。
IGMP:负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
ICMP:基于IP协议在网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题作出诊断,然后采取适当的措施解决。
4.4.数据链路层
Ethernet:一种多路访问广播型数据链路层协议,是当前应用最为广泛的局域网技术。
PPP:一种点对点模式的数据链路层协议,多用于广域网。
PPPoE(以太网承载PPP协议):常见的应用有家庭宽带拨号上网。
5. TCP和UDP报头
5.1 TCP报文头部
(1)Source port(16):源端口,标识哪个应用程序发送。长度为16比特
(2)Destination port:目的端口,标识哪个应用程序接收。长度为16比特
(3)Sequence number(32):序号字段。TCP连接中的每个报文都有序列号。用于对收到的报文的确认。长度为32比特。
(4)Acknowledgement number(32):确认号,用于对收到的报文的确认。
(5)Header length(4):头部长度,TCP报文头部长度,默认情况下,TCP头部为20字节。
(6)Control bits(6):控制位,包含FIN、ACK、SYN等标志位。
(7)Window(16):窗口TCP的流量控制,这个值表明当前接收端可接收的最大的数据总数(以字节为单位)。窗口最大为65535字节。长度为16比特。
(8)Checksum(16):校验字段,由发端计算和存储,并由收端进行验证,用于校验数据传输中是否有损坏。
5.2 UDP报文头部
Source Port :源端口,标识哪个应用程序发送。长度为16比特。
Destination Port :目的端口,标识哪个应用程序接收。长度为16比特。
Length: 报文总长度。
6. TCP三次握手
SYN置位,表示该条包是建立连接的请求包
ACK置位,表示同意建立连接
Ack = 前一个Seq + 1
7. TCP确认机制
Ack = 上一个Seq + 载荷长度
Seq = 上一个Ack
8. TCP滑动窗口
为了保证数据传输的稳定性,可以动态调整数据发送的速度。
当接收方它的处理能力比较强的时候,就可发快一点;接收方处理能力弱的时候,就发慢一点。根据接收方的接收能力来调整发送的速率。
9. TCP四次握手
FIN置位,表示请求断开连接。
ACK置位,表示同意断开请求。Ack = 上一个Seq + 1,Seq = 上一个Ack
10. ARP(地址解析)协议
当主机A给主机B发数据包的时候,数据包上面要写上目标IP和目标MAC,因为最终还是需要通过MAC地址来识别主机的位置。
在给一个目标主机发包的时候,不但要写上目标IP,还要写上目标MAC。目标主机的MAC怎么知道呢?通过ARP协议进行目标主机的MAC获取。
主机A在给主机B发包的时候,主机A会通过一个ARP请求,ARP请求是一个广播包,通过这个ARP请求把广播包发出去,主机B收到这个广播包,主机B就会给主机A回一个ARP响应;主机A收到主机B回过来的ARP响应,这个ARP响应中就包含了主机B的MAC地址。
当主机A给主机B发包的时候就可以写上对应的MAC地址。