OSI/RM------开放式系统互联参考模型
数据链路层:介质访问控制层MAC+逻辑链路控制层LLC
逻辑链路控制层LLC:对数据惊醒校验,只保障数据完整性;同时增加FCS(校验核),校验数据完整性。
应用层:抽象语言----编码
表示层:编码---二进制
网络层:IP 互联网协议
数据链路层:介质访问控制层MAC+逻辑链路控制层LLC
物理层:物理硬件
应用层 表示层 会话层:都是对数据进行加工处理的
传输层 网络层 数据链路层 物理层 :对数据的运输 到达对端做出工作
会话层:提供会话号,同软件不同进程的程序在同时接收发消息时,他们会拥有相同的IP地址MAC地址,此时,就需要会话层分别给予不同的会话号去区分。
传输层:TCP/UDP 1.分段(受到MTU限制)2.端口号
- MTU:最大传输单元 默认1500字节
分段:当数据包过大时,连续发送可能会使数据在传输途中插入别的数据造成损坏,所以需要对数据包进行分段处理,从而保证数据包的完整性。
- 端口号:使用电脑可能会同时访问多个服务器,这多个服务器在进行回复的时候,回复目标都是相同IP/MAC,为了不分配错误,所以在该程序启动时,电脑会在1024-65535随机分配端口号给这个程序,在服务器回包时也会带着这个端口号,这样电脑就能做出正确的数据分配。
端口号:0-65535 1-1023 注明端口 1024-65535高端口/动态端口
TCP/IP 协议簇
1.分层不均
2.分层太多
PDU:协议数据单元 对不同层封装的数据单元标识
应用层-----数据报文
传输层-----数据段
网络层-----数据包
数据链路层------数据帧
物理层------比特流
TTL:生存周期
最大255 推荐64 常见128
以太网II型帧
- 封装
- 解封装
HTTP tcp 80 超文本传输协议
HTTPS TCP 443 (HTTP+SSL(TLC)) 安全传输协议
FTP tcp 20/21 文件传输协议
TFTP udp 69 简单文件传输协议
Telnet tcp 23 远程登录标准协议
SSH tcp 22 安全外壳
DNS UDP/TCP 53 域名解析协议
DHCP UDP 67/68 动态主机配置协议
TCP----传输控制协议----面向连接的可靠协议
在完成了传输层的基本工作的同时,还需要保证传输的可靠性。
面向连接---3次握手 4次挥手 建立端到端的虚链路
SYN:发起一次连接,并告知自身状态 ACK:标识确认
特殊情况:RST重连 TCP 严重错误并重连 FIN 断开
PSH 紧急加收 URG紧急指针
三次握手:
1)第一次握手
客户端发送SYN包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认。
2)第二次握手
服务器确认客户的SYN包,同时发送ACK包(ack = j+1)作为回应;
自己也发送一个SYN包(syn=k),共两个包,此时服务器进入SYN_RECV状态;
(3)第三次握手
客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
四次挥手
四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。在socket编程中,这一过程由客户端或服务端任一方执行close来触发。
(1)第一次挥手
客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。
意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。
(2)第二次挥手(半连接)
服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN_WAIT_2 状态(半连接状态),继续等待服务器端的FIN报文。
(3)第三次挥手
当服务器端确定数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状态。
(4)第四次挥手
客户端收到FIN=N报文后,就知道可以关闭连接了。
但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。
客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。
可靠性----4种可靠性机制-------确认 排序 重传 流控(滑动窗口)
UDP-----用户数据报文协议------非面向连接的不可靠协议 仅完成传输的基本工作--分段 端口号
TCP与UDP的区别
IP的包头
TCP的分段和IP的分片
IP分片的原因:受到二层 数据链路层 MTU的限制,最大传输单元不能超过1500字节
数据到达网络层大于MTU则会分片,为了提高传输效率减少分片,TCP在装载数据时如果能做到封装后的数据不引起三层分片则是一种最佳选择,MSS值的目的就是基于双方的MTU协商出一个最大传输承载长度。