TCP/IP模型——原理解析
0x01 OSI参考模型
- 物理层 比特流和电子信号直接的切换
- 数据链路层 数据帧和比特流之间的转换(数据帧的生成与接受)
- 网络层 负责寻址和路由选择
- 传输层 可靠的传输,只在双方通信节点进行处理,不在路由上进行处理
- 会话层 负责建立和断开通信连接(数据流动的逻辑通路)
- 表示层 负责数据格式的转换,将设备固有的数据格式转换为网络标准格式
- 应用层 针对特定应用的协议
- 在每个分层上,在处理上一层传输过来的数据时可以附加上当前分层的协议所必需的“首部”信息,接收端对收到的数据进行“首部”和“内容”的分离,在发送到上一层,最终将数据恢复成原样
- mac地址和ip地址都具有唯一性,只有ip地址具有层次性
- mac寻址中参考的表叫做,地址转发表,表中记录mac地址
- ip寻址中参考的表叫做路由控制表,表中记录的是集中之后的网络号
0x02 TCP/IP模型
- 物理层 负责数据传输的硬件
- 网络层 使用ip协议,ip协议基于ip地址进行转发分包数据
- ip 使用ip地址作主机的标识,不具备重发机制
- ICMP 如果ip数据包发送途中发生异常导致无法到达对端目标时,icmp会给发送端发送一个异常通知
- ARP 从分组数据包的ip地址中解析出mac地址
- 传输层 使应用程序直接能够正常通信
- TCP 面向有连接到传输协议
- UDP 面向无连接的传输层协议
- 应用层 将OSI中会话层,表示层,应用层的功能集中到应用程序中实现
-WWW 客户端和服务端之间的通信的协议是http协议,所传输的数据格式是HTML,http属于应用层协议,HTML属于表示层协议
0x03 数据链路
- 数据链路层的协议定义了,通过通信媒介互联设备之间传输的规范
0x04 IP协议(网络层)
- 主要作用-实现点对点通信
- ip地址用于-连接到网络中的所有主机识别出进行通信的 目标地址
- ip实现的是多个数据链路只见那通信的协议
- 最大传输单元(MTU)
- 以太网 1500字节
- FDDI 4352字节
- ATM 9180字节
经过分片之后的ip数据包在被重组的时候,只由目标主机进行
- 路径MTU发现
从发送端主机到接收端主机之间不需要分片时最大的MTU,避免中途路由器进行分片处理
0x05 ip相关技术
-
DNS 域名查询系统
hosts文件- 跟域名服务器中注册着以下第一层域名域名服务器ip地址
- 想域名服务器进行查询,接受查询的域名服务器首先会在自己的数据库进行查找,如果有该域名对应的ip地址就返回,如果没有,域名服务器会再向上一层的域名服务器进行查询
-
ARP IP查mac
只适用于ipv4,ipv6可以用icmp- ARP请求包中带有想要查询主机的ip地址和自己的mac地址,目标主机接收到SRP请求包后,如果请求包中的ip地址和自己的一致,就将自己的mac地址放入ARP相应包中返回给发送端
- ARP可以动态的将进行地址解析
-
RARP 从mac查询ip
-
代理ARP,ARP会被路由器隔离,采用代理ARP的路由器会将请求转发到邻近网段
-
ICMP
确认ip包是否成功送达目标地址,通知在发送过程中的ip包被废弃的原因,ICMP的通知消息会使用ip进行发送- 类型3 CMP目标不可达消息,ip路由器无法将ip数据包发送给目的地址时,会给发送端主机发送一个不可达的ICMP消息,并显示具体原因
- 类型5 重定向消息,如果路由器发现发送端主机使用不是最佳的路径发送数据,会给发送端返回一个ICMP重定向消息,消息中包含了最适合的路由信息
- 类型11 超时消息,ip包中有TTL(最大生存周期),它的值每经过一个路由就-1,直到0该包就会被丢弃。此时ip路由器就会发送一个ICMP超时的消息给发送端
- 类型0,8 回送消息,判断所发送的数据包是否已经成功到达对端,可以向对端主机发送回送请求的消息(8),也可以接受对端主机发送过来的会送应当消息(0),ping命令就是利用这个消息实现的
- 类型4 原点抑制消息,为了缓解低速广域网下路由器的拥堵
- 类型9,10 路由探索消息,主要用于发现与自己相连网络中的路由器
- 类型17,18 地址掩码消息,用于主机或路由器想要了解子网掩码情况
-
ICMPv6
没有icmpv6,ipv6就无法正常通行,ipv6中从IP定位mac,从ARP转移到ICMP的邻居探索消息- ICMPv6中类型133-137的消息叫做邻居探索消息
-
DHCP
没有ip地址可以发送DHCP包 -
NAT
用于在本地网络中使用私有网络,连接互联网时转而使用全局ip地址的技术- NAT-PT 将ipv6的首部转换成ipv4首部的技术
-
ip隧道
经过隧道的数据统合为一个数据,在前加上网络首部,网络首部后面继续追加网络首部的技术,解决ipv4,ipv6通信问题
0x06 TCP,UDP
通信中常采用5个信息识别一个通信,源IP,目标ip,协议号,端口号,目标端口号
- 端口号 识别统一主机中进行通信的不同程序
- 0-1023,熟知端口号,用于广为使用的应用程序的端口号
- 1024-49151,登记端口号,没有熟知的应用程序使用,需要等级,以免重复
- 49152-65535,动态分配端口号
- 端口号和协议 不同协议可以使用相同的端口号,数据到底ip层,先检查ip首部中的协议,在传给对应的模块,0-1023与传输层协议没有关系,只要端口一致都分配到统一种应用程序进行处理。
TCP
面向有连接的,可靠的流协议,提供"顺序控制",“重发控制”,“流控制”,”拥塞控制“等提高网络利用率的功能
-
通过序列号的应答实现可靠传输
-
重发超时 在每次发包时都会计算往返时间以及偏差,将往返时间和偏差相加再大一点,就是重发超时的时间
-
ACK,确认应答,发送端数据到达接收端时,接收端会返回一个已收到消息的通知。
-
SYN,两台计算机在TCP连接会话时,连接首先会被初始化,完成这个任务的就是 SYN。SYN包,表明另一台计算机已经做好会话准备,发出服务请求的计算机才发送SYN包
-
FIN,断开连接。FIN为1时,表示今后不会再有数据发送,希望断开连接
-
三次握手四次挥手
- tcp以段为单位发送数据
- 在tcp建立连接的同时,也可以确定发送数据包的单位,可以称为最大消息长度MSS,最理想的长度真好是ip中不会被分片处理的最大数据长度。
- TCP在传送大量数据时,是以MSS的大小将数据进行分割发送
- MSS在三次握手时,会在两端主机之间计算产生
- TCP流控制,TCP首部中有一个字段用来通知窗口大小,接受端将自己可以接受的缓冲区大小发送给发送端,这个字段值越大,网络的吞吐量越高。接受的缓冲区一旦面临数据溢出时,窗口大小值也会被设置成更小的值通知给发送端,从而控制数据流量
UDP
具有不可靠性的数据报协议
其他传输层协议
- UDP-LITE,轻量级用户数据报协议
- SCTP,流控制传输协议
- DCCP,数据报拥塞控制协议
# 0x07 路由协议
# 0x08 应用协议
- telnet,23
- ssh
- FTP
- SMTP,电子邮件
- http
- 点赞
- 收藏
- 关注作者
评论(0)