目录
一. OSI七层参考模型
目的:制定同一标准,但是实际不使用
核心是分层
分层优点:位于同一层的协议或者设备具备相同或相似的功能,而不同层次之间的协议或者设备具有明显的差异。
1.更利于标准化
2.降低层次之间关联性。减少某些层次协议对其他层的影响。
每一层提供自身的服务
每一层都在下层的基础上提供一些增值服务
应用层:接受用户的数据,人机交互的接口
表示层:将语言转换为二进制
会话层:
建立维持和断开一次会话,PC和服务之间建立的请求
传输层:
优化传输,实现端对端的传输,为了区分进程和服务
端口号由16位二进制构成,65535个端口
0~1023知名端口号(著名端口号),表明特定服务
例如:HTTP ——80
HTTP——更安全,相当于HTTP+SSL,端口号为443
常见端口号:
- 域名系统 (DNS)— TCP/UDP 端口 53
- 超文本传输协议 (HTTP) — TCP 端口 80
- 简单邮件传输协议 (SMTP)— TCP 端口 25
- 邮局协议 (POP)— TCP 端口 110
- Telnet — TCP 端口 23
- 动态主机配置协议 (DHCP)— UDP 端口 67 和端口 68
- 文件传输协议 (FTP)— TCP 端口 20 和端口 21
常见端口号:
动态端口:大多数服务使用随机的动态端口号迚行区分,特点:动态端口不流量之间存在一一对应关系(但并无绑定)
网络层:实现数据从源到目的地的转发
数据链路层(包含介质访问控制层):
在数据链路上实现数据点到点,点到多点方式的直接通信
物理层:在媒介上传输比特流
二. TCP/IP模型
优化osi参考模型,更利于实际使用
区别:
标准模型:
- 上三层都和应用程序有关,则合并为应用层
- 下两层密不可分,则合并
应用层——数据报文
传输层——数据段
TCP
UDP
网络层——数据包
IP协议
数据链路层——数据帧
以太网协议
物理层——比特流
DHCP
2.1 封装与解封装
封装:达到某一层次数据之前封装上对应的功能数据,让它执行对应的功能
解封装:封装过程的逆过程
2.2 TCP与UDP
两者不同点:
- TCP是面向连接协议(询问能否接受,能则转发,不能则不转发),
而UDP是无连接的协议(直接发) - TCP——排序,确定,超时重传,流控的机制
- TCP可以进行流控和分段,而UDP都不能
- TCP消耗资源比UDP多,传输效率比UDP更低
- TCP传输是可靠的,UDP传输是不可靠的
两者应用场景:
- TCP一般运用在对数据可靠性要求比较高,对传输效率要求相对较低的情况,例如:传输文件,邮件等等
- UDP一般运用在对数据可靠性要求比较低,对传输效率要求高的情况,例如:即时通讯,直播等。
2.2.1 TCP的报头
URG——紧急指针,优先转发
ACK——确认标志位
PSH——紧急推送位
RST——数据因为各种原因无法发送
SYN——三次握手时至1代表数据包是三次握手的数据包
FIN——表示关闭连接,
2.2.2TCP的三次握手
发送:syn置1,seq序号是随机值
回复:ack置1,acknuber序号则是确定的ack序号(在发送的随机序号基础上加一)
- TCP发送的每一个数据包都带有序号,只有初始值是随机值,以后的序号顺序发送,
,确认收到数据——在原有的序号上加一
ACKnuber——确认序号=本地接收到的序号+1
流程:A—>B 发送数据包
-
SYN=1(表明身份,代表建立连接),SEQ=随机值X
-
B接收到了A发送的数据包,并回复:
ack=1(表明身份),acknuber=X+1 -
A收到B回复,则同样回复B
SYN=1,SEQ=Y -
B收到A回复,则B回复A
ack=1,acknuber=y+1 -
A收到B回复,A发送数据给B
seq=X+1
二次握手:A能发能接收,B只能确定能接收,不确定能发
三次握手:A,B都能确定能接收和发送数据
- 如果第一次A建立连接失败,超时后A会触发重传,如果延迟,则B回复收到的请求次数
- 如果第二次建立连接失败,客户端就会触发超时重传机制,重传 SYN 报文。如果第二次握手丢失了,服务端就收不到第三次握手,于是服务端这边会触发超时重传机制,重传 SYN-ACK 报文。
- 如果第三次建立握手失败,因为这个第三次握手的 ACK 是对第二次握手的 SYN 的确认报文,所以当第三次握手丢失了,如果服务端那一方迟迟收不到这个确认报文,就会触发超时重传机制,重传 SYN-ACK 报文,直到收到第三次握手,或者达到最大重传次数。
ACK 报文是不会有重传的,当 ACK 丢失了,就由对方重传对应的报文。
2.3 TCP的流控
对发送方发送速率的控制——流量控制
TCP/IP支持全双工传输,因此通信的双方都拥有两个滑动窗口,一个用于接受数据,称之为接收窗口;一个用于发送数据,称之为拥塞窗口(即发送窗口)。指出接受窗口大小的通知我们称之为窗口通告。
目的是解决:接收方发了通知报文后,继续等待发送方发送数据,而发送方则在等待接收方的通知报文,此时双方会陷入一种僵局。
3.1 数据链路层——以太网协议
FSC——帧校验序列,靠CRC算法校验,校验上层数据是否完整,各个字段是否缺失