OSI(Open System Interconnection)七层模型
第一层:物理层,确定接口以及传输媒体的标准。RG45、RS449
第二层:数据链路层,主要负责在两个相邻结点之间的线路上,无差错的传输以帧为单位的数据。PPP,CSMA/CD
第三层:网络层,主要负责选择合适的网间路由和结点,确保数据可以及时传输。IP,ARP,ICMP
第四层:传输层,主要负责在两台主机应用进程之间建立端到端的逻辑通信。TCP,UDP
第五层:会话层,负责管理网络设备之间的会话连接,建立会话,保持会话,终止会话。SQL
第六层:表示层,负责对数据进行编码,进行数据格式转换,对数据进行加密、解密等。MPEG4,JPEG,PNG
第七层:应用层,负责向用户提供各种应用服务,如文件传输、收发邮件、浏览网页等。
Telnet,FTP,HTTP,SNMP
TCP、UDP
TCP与UDP的区别
TCP(translation control protocol)传输控制协议 | UDP(user data protocol)用户数据报协议 |
---|---|
面向连接,可靠的 | 面向无连接,不可靠的 |
一对一 | 一对多,多对一,多对多 |
报文段 | 数据报 |
机制:滑动窗口,超时重传,自动纠错 | |
首部开销大,传输速度慢 | 首部开销小,传输速度慢快 |
电子邮件 | 视频电话 |
TCP 三次握手四次挥手
三次握手:
- 第一次握手:客户端将标志位SYN置为1,并随机产生一个序列号seq=J打包发送给服务端,此时client进入SYN_SENT状态
- 第二次握手:服务端收到数据包后由标志位SYN=1得知这是客户端在请求建立连接,server将标志位SYN和ACK都置为1,确认号ack=J+1,随机产生一个seq=K打包发送给客户端,确认连接请求并进入SYN_RCVD状态
- 第三次握手:客户端确认标志位ACK是否为1,确认号ack是否为J+1,是的话将标志位ACK=1,确认号ack=K+1发送给server;server收到后确认ACK是否为1,确认号ack是否为K+1,是的话双方进入established状态,连接建立成功,client和server可以开始传输数据
四次挥手:
- 第一次挥手:客户端想要释放连接,发送一段报文给服务端,其中:标志位FIN=1,序列号seq=u,并进入FIN-WAIT-1状态
- 第二次挥手:服务端收到报文后确认客户端想要释放报文,结束established,进入close-wait状态,并返回一段TCP报文,其中:标志位ACK=1,确认号ack=u+1。客户端收到服务器发出的报文,确认了服务端收到了自己要想释放连接的请求,结束FIN-WAIT=1状态,进入FIN-WAIT-2状态
- 第三次挥手:服务端发送完传输数据,想要断开连接,发送一段标志位FIN为1,seq=w的报文给客户端,并进入LAST-ACK状态
- 第四次挥手:客户端收到报文后,确认服务端可断开连接,发送一段ACK=1,确认号ack=w+1的报文给服务端,并进入TIME-WAIT状态,等待2MSL(Maximum Segment Lifetime最长报文段寿命,MSL指一个片段在网络中最大的存活时间,2MSL就是一个发送和一个回复所需的最大时间。如果直到2MSL,Client都没有再次收到FIN,那么Client推断ACK已经被成功接收,则结束TCP连接。)后结束会话。
字段 | 含义 |
---|---|
URG | 紧急指针是否有效。为1,表示某一位需要被优先处理 |
ACK | 仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效 |
PSH | 提示接收端应用程序立即从TCP缓冲区把数据读走 |
RST | 对方要求重新建立连接,复位 |
SYN | 请求建立连接,并在其序列号的字段进行序列号的初始值设定。建立连接,设置为1 |
FIN | 希望断开连接 |
TCP、UDP协议的应用
FTP21 TELNET23 SMTP25 DNS53 TFTP69 HTTP80 SNMP161
DNS 域名转换
输入域名后,web会在本地DNS缓存寻找是否有对应的IP地址,若有,则直接向ip发送请求,若没有,则向本地域名服务器请求,若有,返回ip;若没有,向根服务器,然后向顶级域名服务器,直到找到ip地址。获取到ip后,建立TCP连接,发送HTTP请求。传输层(报文段)TCP封装(源端口,目的端口)ip数据包到网络层,服务器收到后响应http请求,返回内容,浏览器解析内容、展示并释放TCP连接。
时分复用、波分复用
时分复用就是分时段传输数据来提高数据传输效率,波分复用是光的频分复用,频分复用是把一段信号中同一时间段不同频率给利用起来,比如低频信号给电话,高频信号给视频。
TCP/IP协议
TCP/IP协议是指能在多个不同网络上实现信息传输的协议簇,找到你想要交互的计算机
OSI七层 | TCP/IP 协议 |
---|---|
应用层 | 应用层 |
表示层 | |
会话层 | |
传输层 | 传输层 |
网络层 | 网络层 |
数据链路层 | 应用层 |
物理层 |
ping 包的过程
三层:
A——ping——C
1.A欲发起ping请求,
源IP:10.10.10.1,源MAC:MAC-A,目标IP:10.10.20.1,目标MAC:MAC-C(未知)
2.传到网络层后发现目标ip与自己不在同一个网段,便欲向路由器发送请求。查表没有路由器的MAC地址,ARP广播报文
源IP:10.10.10.1,源MAC:MAC-A,目标IP:10.10.10.100,目标MAC:MAC-E0(未知)
3.SW1收到报文,基于源地址的学习F1/1——MAC-A,基于目的地址的转发
4.R收到报文后解封装发现请求的是自己的MAC地址,学习IP:10.10.10.1——MAC-A并单播回复ARP报文
源IP:10.10.10.100,源MAC:MAC-E0,目标IP:10.10.10.1,目标MAC:MAC-A
5.SW1收到报文,基于源地址的学习F0/1——MAC-E0,基于目的地址的转发
6.A收到报文,学习R-E0MAC地址,编辑数据发送
源IP:10.10.10.1,源MAC:MAC-A,目标IP:10.10.20.1,目标MAC:MAC-E0
7.SW1转发报文
8.R收到解封装后发现请求的MAC是自己的,但ip不是自己的,经检查路由表,是去往E1的路由,欲转发报文
源IP:10.10.10.1,源MAC:MAC-E1,目标IP:10.10.20.1,目标MAC:MAC-C(未知)
9.查表未知MAC-C,广播ARP
源IP:10.10.20.100,源MAC:MAC-E1,目标IP:10.10.20.1,目标MAC:MAC-C(未知)
10.SW2收到报文,基于源地址的学习F0/1——MAC-E1,基于目的地址的转发
11.C收到报文,发现请求的MAC地址是自己的,学习10.10.20.100——MAC-E1;编辑ARP单播报文回应
源IP:10.10.20.1,源MAC:MAC-C,目标IP:10.10.20.100,目标MAC:MAC-E1
12.SW2基于源地址的学习F1/1——MAC-C,基于目的地址的转发
13.R收到报文,学习10.10.20.1——MAC-C
14.填入C的MAC,转发数据
源IP:10.10.10.1,源MAC:MAC-E1,目标IP:10.10.20.1,目标MAC:MAC-C
二层:A——ping——B
1.A在应用层发起目的IP为10.10.10.2的ping请求
2.传输层接到上层请求的数据,将数据分段并加上传输层报头下传到网络层
3.网络层收到数据后,根据ICMP协议封装&#x