一、为什么要有网络参考模型?
回到之前网上购物的实例。
卖家只需要把自己的产品做好就行,关于产品的运输可以直接交给快递公司来做,而快递小哥也只需要考虑如何将卖家交付的包裹送到快递集散中心,至于快递集散中心接下来怎么发到买家的城市,也无需考虑。这样各司其职,只负责自己的工作效率又高,又专业网络通信中也是一样APP开发者,只需要专注自己的软件设计,交换机只需要关注怎么帮终端设备(如服务器、手机等)转发数据,各司其职,都做自己专业的,利于技术的发展和故障的排查。
二、QSI模型
1.应用层
是面向用户的APP,承载用户的数据,微信聊天的文字图片,抖音观看的视频等都属于应用层数据
2.表示层
计算机用自己的编码方式对用户的数据进行编码,如用jpeg编码方式来表示各种图片数据,用MP3编码方式来表示各种声音数据,当然某公司为了安全起见,也可以独创一套只有自己才能识别的编码方式来表示数据。
3.会话层
两个程序之间的接口,如美团APP可以调用微信支付,就是通过二者之间的会话成接口。
4.传输层
用来建立TCP或者UDP连接,并给数据报文打上端口号 。
TCP和UDP的连接区别就是TCP传输可靠性高,但是速度慢,延迟高,UDP刚好相反,根据不同的应用场景按需选择。
给报文打上端口号的作用,接收方可以识别报文属于什么应用程序,如80是网页的数据,4000是qq的数据。
5.网络层
给数据包打上IP地址用于路由转发,有了IP地址网络设备才知道数据包应该发往互联网上的哪一个位置。
6.数据链路层
给数据包打上MAC地址,MAC地址是两个直连节点通信的方式,如多台电脑连接在交换机上,交换机给其中一台电脑发数据的时候,必须知道这合电脑的 MAC地址。
7.物理层
把封装好的数据包用物理信号表示
三、TCP/IP参考模型
TCP/IP模型对OSI模型进行了简化,将OSI模型的上三层进行了合并,下两层也进行了合并。
实际工作中,一般倾向于上三层合并,下两层依然分开看,就是常说的TCP/IP 对等模型。
1.应用层
HTTP
超文本传输协议,提供浏览网页服务
Telnet
远程登录协议,提供远程管理服务
FTP
文件传输协议,提供互联网文件资源共享服务
SMTP
简单邮件传输协议,提供互联网电子邮件服务
TFTP
简单文件传输协议,提供简单的文件传输服务
2.传输层
TCP
为应用程序提供可靠的面向连接的通信服务
UDP
提供了无连接通信,且不对传送数据包进行可靠的保证
3.网络层
IP
将传输层的数据封装成数据包并完成源站点到目的站点的转发,提供无连接的、不可靠的服务
IGMP
负责IP组播成员管理的协议。它用来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成成员关系。
ICMP
基于IP协议在网络中发送控制信息,提供可能发生在通信环境中的各种问题反馈。通过这些信息,使管理者可以对所发生的问题进行诊断,然后采取适当的措施解决。
4.数据链路层
Ethernet
一种多路访问广播型数据链路层协议,是当前应用最广泛的局域网技术。
PPP
一种点对点模式的数据链路层协议,多用于广域网。
PPPoE
Point-to-Point Protocol over Ethernet,以太网承载PPP协议:常用的应用有家庭宽带拨号上网
四、TCP和UDP报头
TCP报文头部
Source Port
源端口,标识哪个应用程序发送。长度为16比特
Destination Port
目的端口,标识哪个应用程序接收。长度为16比特
实例
以浏览网页的时候,客户端(网页浏览器)向服务器(网站)请求下载网页为例。
客户端向服务器发了一个请求报文,这个报文的源端口是客户端网页浏览器的端口,目标端口就是网站的web服务软件
Sequence Number
序号字段。TCP链接中的每个报文都有序列号。长度为32比特。
Acknowledgment Number
确认号,用于对接收到的报文的确认。
Header Length
头部长度,TCP报文头部长度,默认情况下,TCP头部为20字节。
Control bits
控制位,包含FIN、ACK、SYN等标志位,各个标志位的作用
Window
窗口TCP的流量控制,这个值表明当前接收端可接收的最大的数据总数(以字节为单位)。窗口最大为65535字节。长度为16比特。
Checksum
校验字段,由发端计算和存储,并由收端进行验证,用于校验数据传输中是否有损坏。
UDP报文头部
Source Port
源端口,标识哪个应用程序发送。长度为16比特。
Destination Port
目的端口,标识哪个应用程序接收。长度为16比特。
Length
报文总长度
五、TCP三次握手
PC1找PC2,PC1向PC2发送源地址为1.1.1.1,目标地址为2.2.2.2的握手请求,想和PC2建立连接通信。
Seq:请求包序列号,ACK(acknowledgement 确认) ,SYN(synchronous建立联机)
怎么才算一个请求?当SYN置位(二进制位要么是0要么是1)才算一个请求
怎么才算与PC1建立连接?当ACK置位才算同意建立连接
过程:PC1找得到PC2,PC2也找得到PC1
六、TCP确认机制
假设PC1给PC2发送一段数据。传输过程如下:
- PC1将全部待TCP发送的数据按照字节为单位编上号。假设第一个字节的编号为“a+1”,第二个字节的序号为“a+2”,依次类推。
- PC1会把每一段数据的第一个字节的编号作为序列号(Sequence number),然后将TCP报文发送出去
- PC2在收到PC1发送来的TCP报文后,需要给予确认同时请求下一段数据,如何确定下一段数据么?序列号(a+1)+载荷长度=下一段数据的第一个字节的序号(a+1+12)
- PC1在收到PC2发送的TCP报文之后,发现确认序列号为“a+1+12”,说明“a+1”到“a+12”这段数据已经被接受,需要从“a+1+12”开始发送。为了提升发送效率,也可以一次性发送多段数据,由接收方统一确认。
七、TCP滑动窗口
作用
TCP为了保证数据的稳定性,可以动态调整数据发送的速度,接收方传输快的就发送快
过程
- 在TCP三次握手建立连接时,双方都会通过window字段告诉对方本端最大能够接受的字节数(也就是缓冲区大小)
- 连接建立成功之后,发送方会根据宣告的window字段进行传输
八、TCP四次挥手
四次挥手是相对于三次握手的来建立连接,在根据四次挥手断开连接
九、网络层协议
当采用IP作为网络层协议时,通信的双方都会被分配到一个“独一无二”的IP地址来标识自己。IP地址可被写成32位的
二进制整数值形式,但为了方便人们阅读和分析,它通常被写成点分十进制的形式,即四个字节被分开用十进制表示,中间有点分隔,比如192.168.1.1。
IP数据包的封装与转发
网络层收到上层(如传输层)协议传来的数据时候,会封装一个IP报文头部,并且把源和目的IP地址都添加到该头部中。
中间经过的网络设备(如路由器),会维护一张指导IP报文转发的“地图”----路由表,通过读取IP数据包的目的地址,查找本地路由表后转发IP数据包。
IP数据包最终到达目的主机,目的主机通过读取目的IP地址确定是否接受并做下一步处理。
除了IP协议外,网络层中还有如OSPF、IS-IS/BGP等各种路由协议帮助路由器建立路由表,ICMP帮助进行网络的控制和状态诊断。
十、链路层协议-以太网
以太网MAC地址:独一无二的地址,厂家地址+产品标识
工作在数据链路层的设备。例如以太网交换机,会维护一张MAC地址表,用于指导数据帧转发。
利用ARP协议进行mac和ip地址的发送
十一、常见物理层传输介质
双绞线(网线)、光纤(超过100米,园区使用)、同/异步串口电缆(广域网)、无线电磁波等