目录
分层思想
将复杂的流程分解为几个功能相对单一的子过程 整个流程更加清晰,复杂问题简单化 更容易发现问题并针对性的解决问题
OSI七层参考模型
物理层(PhysicalLayer):
建立,维护,断开物理连接(由网卡提供)。由MAC地址标识网卡的物理地址
数据链路层(data link layer):
负责封装上层数据,包装成为“帧”,帧内封装了发送端和接口端的数据链路层的具体地址(MAC地址+MAC地址+校验信息)。如果校验信息有误,可以重传数据帧
网络层(network layer):
负责将上层数据从源端传输到目的地。使用逻辑地址来标识源头和目标,上层数据被封装成“数据包”
数据包:包的头部封装了源的逻辑地址+目标的逻辑地址。网络层会根据这两个逻辑地址,自动选择最佳的路径(寻址)
三次握手发生在网络层(IP协议)
上面三层都是点到点之间的协议。下面四层都是端到端的协议
传输层(transport layer):
网络中不同主机之间的数据通信(TCP,UDP)。
网络层和数据链路层负责把数据发送到目标的主机,但这个数据需要用什么用户进程去处理,就需要传输层帮忙。
传输层决定会话层(网络用户)提供什么样的服务。
由于一个主机上可以有多个进程并执行,因此可能有多个网络同时使用一个主机,因此需要以某种方式来区分到底是哪个连接属于哪个进程。因此需要使用“报文”的概念
“报文”:网络连接+要传输的数据,在传输层会加上报文头,来区分。同时也可实现双向会话。
会话层(session layer):
允许不同主机之间建立会话连接,允许类似传输层的数据传送,而且提供了增强型服务;一次会话,可以多次双向传输。
服务:会话管理控制,会使用令牌(Token)进行管理。令牌可以界定该会话可以进行什么样的传输,单向,双向,有条件的双向。提供同步点,如果在网络传输过程中发生故障,可以使用同步点进行断电续传。
表示层(Presentation layer):
表示层用于完成一些特定的功能,这些特定功能比较通用,不需要用户自己实现,表示层以下只关心数据的可靠性传输本身,而表示层关心的是传输信息的语法和语义。
比较典型的是按照一定的标准进行数据编码(字符编码格式),或者日期,货币,数量等等(由字符串,整型,浮点型等格式构成的数据结构:ASCLL码对照表,加解密,数据解压缩等)
应用层(application layer):
应用层包含大量人们普遍需要的各种协议,如何解析不同格式的文件流。ISO并没有具体的定义应用层的协议集合。
常用的备选:虚拟终端,文件传输,电子邮件等
TCP/IP协议
数据封装过程
数据解封装过程
PDU
设备与层的对应关系
各层间通信
网络层协议
IP协议
协议字段
主要功能:定义了基于IP协议的逻辑地址;选择数据通过的网络最佳路径;连接不通的媒介类型
-
版本(version):IPV4或IPV6,IPV6可以解决IP地址不够用的问题,但较为有限
-
首部长度(Header Length):用于表示IP数据包的头部长度(头部是数据之前的全部内容。长度由于可选项,是可变的,在20~60个字节之间,首部长度(该字段)=头部字节长度/4形成的二进制编码)
-
优先级与服务类型(Priority & Type of Service):前四位是优先级,后四位是服务类型,用于保障服务质量(Quality of Service:Qos)
-
总长度(Total Length):包含包头和数据的总长度。16位最长为65535字节
-
标识符(identification):上层可能会对数据进行分片处理,分片时,会对该数据片段分配一组编号,这组编号就是标识符(16)位。目的是保证数据被正确的重组。每个数据包都有一个不重复的标识符。
-
标志(Flags):和分片信息一同传递信息(标志信息)。如:当前包不可以继续分片(从一个以太网发送到另一个以太网);又如:一组分片是否都已经完成发送。(一共有3个位,三个位分别标志不同的信息)
-
段偏移量(Fragment Offset):为了把数据包的各个分片重新组织起来(13位)
-
TTL(Time to Live):数据包不能再网络中无限转发,TTL是一个值,每转发一次会减一,当该包TTL值为0时,会被丢弃。如果丢包过于频繁,考虑增大该值。
-
协议号(Protocol):标记了数据包中封装的传输数据的协议是哪一个(TCP:6、UDP:17)
-
首部校验和(Header Checksum):16位的错误校验字段,每个网关需要重新计算报文头的校验和(如果数据在传输过程中有修改,则会不一致,需要重新传输)
-
源IP地址(Source IP Address):32位, 网络地址,数据包来源
-
目的IP地址(Destination IP Address):32位,网络地址,数据接收端的地址
-
可选项(Options):无固定长度。例如:可以输入创建该数据包的时间等。
-
数据(Date):传输层传递过来的报文数据。
ICMP协议
作为网络管理员,必须知道网络设备之间的连接情况,因此需要一种机制来侦测和通过网络设备可能发生的各种情况。ICMP是Internet网络控制消息协议,用于在ip网络中发送控制消息,提供在通信环境中可能发生的各种问题的反馈。通过这些反馈信息管理员就可以对所发生的问题作出判断,然后采取适当的措施去解决问题。
ping命令
-
直接联通的情况,TTL(生命周期)不被消耗
-
转发联通的情况,TTL会被消耗,如果TTL被消耗完,依然没有转发成功,则连接失败,哪怕网络是通的
-
直连失败的情况,TTL被消耗完,包完全丢掉
-
转发失败的情况,TTL会被路由器接受,然后转发时失败,包完全丢掉
-
网络不稳定的情况,TTL可能会联通,可能会失败
报错提示信息
-
请求超时(在规定时间内没有应答,也可能被防火墙拦截)
-
找不到主机(DNS无法解析)
ARP协议
ARP(Address Resolution Protocol):地址解析协议
交换机的基本原理
-
A主机想访问B主机,此时A主机传输帧到交换机。
-
交换机学习A主机的MAC地址(MAC地址列表没有时),同时查看MAC地址列表中有没有B主机的MAC
-
没有B主机的MAC地址时,会在交换机的所有网络地址中进行广播(所有网络地址都会收到)
-
B主机如果收到广播,则会响应(单播),其他主机会丢弃该广播信息
-
交换机收到B主机的响应,则会学习B主机的响应
-
A主机可以直接通过单播访问B主机
主机到交换机的过程是会把IP地址解析为MAC地址,此时使用的是ARP协议
ARP绑定
-
arp病毒:一般arp病毒会自动向外发布ARP应答,该应答中的IP地址不是其本机IP地址,而MAC地址是虚拟的,因此当其他主机收到此应答更新后更新ARP表,最终导致网络中的主机无法正常通信。
-
arp绑定:可以将IP地址与相应主机的MAC地址进行一一绑定,是防止ARP攻击的有效处理办法。进行ARP绑定以后,主机不会处理已绑定的IP地址的变更和应答。
-
arp-s ip地址 MAC地址 :命令手动的进行IP地址和MAC地址的绑定(-d :清除对应ip地址映射关系)
在交换机中配置静态ARP列表
传输层协议
TCP协议
TCP报文段首部格式(20~60字节)
源端口号和目标端口号都是进程端口号
序号:
-
TCP从进程接收数据的字节流时,会存储在发送的缓存中,同时每一个字节进行编号编号一定从0开始,首字节的编号是一个随机数(32位无符号的值)发送和接收这两种不同方向的编号是互相独立的。
-
当每个字节的编号完成后,TCP会给报文段指定一个“序号”,是报文段首字节的编号,也是唯一标识。当数据传输到目的地之后,接收端会按照这个序号把数据重新排列,保证数据的准确性。
确认号:
对发送端的确认信息,用来告诉发送端这个序号之前的数据段已经接收完成,如果确认号是X,则说明X-1个数据段已经完成发送。
首部长度:
一般20个字节,选项可以最大使首部长度扩大到60字节。
保留:
目前未被使用,只做未来扩展功能使用
控制位:
很重要的作用,TCP的连接、传输、断开,都受这六个控制位指令的指挥。
窗口大小:
说明本地可接受数据段的数目,这个值可变,网络通畅时,窗口会变大加快传输效率,网络不稳定时,窗口会减小来保证数据的可靠性传输。流量控制机制就是依靠变化窗口来实现。
校验和:
做差错控制,与IP的校验和不同,TCP的校验和的计算包括TCP首部、数据和其他填充字节。在发送时,发送端计算校验和,接收端也计算校验和比对,若不对应,则接收端丢弃该数据。
紧急指针:
一般发生的场景:一个数据包因各种原因多次重传,导致后续传输被阻塞或等待,此时发送端会标记URG=1,紧急指针标记了紧急传输的报文的序号。