计算机网络-Web协议

449 阅读13分钟

应用层协议

DNS

什么是DNS:

在TCP/IP网络中,每个主机都有一个IP唯一标识,计算机基于IP地址进行通信。然而IP地址不好记,所以人们在互联网信息中心管理了一份hosts文件,用于记录主机名与IP地址的映射,访问主机名时,系统会将主机名转换为IP地址。但是如此,每台主机进行IP地址变更时,hosts文件就要变更,那其他所有的计算机都要重新下载hosts文件。不利于管理与扩展。

所以我们把每台主机对那个hosts文件的关注转移到了DNS系统上。DNS系统维护了多个记录主机域名与IP地址映射的数据库,它可以高效地对其中的数据进行设定与变更。那么在主机需要更改映射时,只需要向DNS系统请求,然后DNS检索到对应组织的域名服务器并进行修改即可,此过程不会影响到其他主机。域名服务器记录了域名与IP的映射。它是一个树形结构,根域名服务器的下面每层都是若干域名服务器,每个域名服务器管理该层级中的域名。而且每个域名服务器都有它下面所有层的IP地址,用于检索.

DNS查询:

我们的主机会注册域名服务器的IP地址,当请求到来时主机会先去自己的hosts文件查找映射。若没有,则向本机注册的域名服务器查找映射。若没有,就去根域名服务器查询映射。然后根域名服务器会向下遍历树,直至找到指定的域名服务器,然后返回IP地址。(补充:主机与域名服务器都会缓存这个IP地址)

DNS劫持:

攻击者攻击者通过攻击域名服务器获取资源记录、攻击域名注册商获取控制域名的账户口令、非法入侵路由器而修改DNS设置等方式,篡改了某个域名的解析结果,使得指向该域名的IP被替换,用户访问该网址时就被引导到了恶意网站。

运营商LocalDNS可能会劫持解析的域名,把域名强行指向自己的内容缓存服务器的IP地址、修改DNS的TTL而影响服务的可用性等。 防止DNS劫持: 1.在网络中定期检测,及时发现异常的IP请求路径

2.重置路由器的配置

3.使用HttpDNS绕开运营商的LocalDNS,使用HTTP协议来直接和DNS服务器交互(DNS协议基于UDP)。 DNS污染: DNS污染属于DNS劫持的一种,它是指用户访问一个域名时,黑客服务器会伪装成DNS服务器向用户返回错误的IP地址。

FTP协议

FTP文件传输协议:用于客户端与FTP服务器之间可靠高效地传输文件。FTP将命令和数据分开传输,也就是说它需要两个端口。

  • 命令端口:对于“改变目录”、“删除文件”等命令,通过命令端口发送;

  • 数据端口:

被动模式:服务器会返回一个21端口给客户端,客户端以此端口号为数据端口开启Socket连接。

主动模式:客户端发送一个20端口给服务器,服务器需要连接到客户端开启的这个数据端口,进行数据传输。

SNMP协议

SNMP是基于UDP的用于在管理服务器和管理代理之间传递网络管理控制和报文信息。(管理服务器就是对被管设备的网络行为的控制,而这个代理就是在被管服务器中的一个进程,该进程与管理服务器的通信,代理管理服务器的动作)。SNMP通过请求ID与响应ID的映射来保证可靠传输。

SNMP通常是请求响应模式,就是管理服务器发送请求,代理接收请求,执行动作,返回响应。还有就是陷阱报文,就是代理向管理服务器发送一个非请求报文,用于通知管理服务器有异常情况。

DHCP协议

DHCP协议是动态主机配置协议。我们将客户主机IP地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议为客户端分配IP地址。

为什么要有DHCP呢?

两台主机只有处于同一网段,一台主机试图连接另一台主机时,他才会去发送ARP请求获取对端主机的MAC地址,进行正确的连接。如果两台主机处于不同网段,则网络包不会被直接发送到网络上,而是被发送到网关上。假设我们没有配置网关,现在也是没有对端主机信息的,即无法得知对端主机的MAC地址,所以无法连接。所以IP地址要处于同一网段。然而我们换一个地方,IP地址就需要换到那个网段中,显然不河里,所以就有了动态主机配置协议DHCP。

工作原理:

当一台新机器加入一个网络时,他会进行DHCP Discover:使用IP地址0.0.0.0广播一个网络包,广播包中封装了BOOTP头(即DHCP)。那DHCP Server就可以获取这个网络包,判断此网络包对应机器的MAC地址是否已经存在(这就体现了MAC地址唯一的重要性)。然后就会动态分配给此机器一个IP地址、子网掩码、网关等信息。然后新机器会向网络中广播一个DHCP Request,DHCP Server收到DHCP Request,会广播返回给新机器一个DHCP ACK,此ACK会携带IP租期。至此DHCP完成工作

WebSocket协议

WebSokcet协议是一个应用层协议。使用WebSocket协议的服务器可以订阅一类消息,当服务器收到这类消息时就会对客户端发起通知,实现服务端的消息主动推送。

WebSokcet发生消息基于Frame帧。在消息传输时会进行帧的分片,不同类型的帧对应不同的功能

  • 持续帧(维持前一个帧的状态)

  • 心跳帧:WebSocket使用ping帧和pong帧来维持心跳,收到ping帧时就需要回发pong帧。ping帧中可以携带数据,那对应pong帧中必须有同样的数据

  • 数据帧:传输二进制数据或文本数据。

  • FIN帧:WebSocket基于FIN帧来进行Frame的合并。WebSocket基于TCP层之上,所以不会出现帧乱序的情况。

缺点:服务端主动推送消息,就无法很好地动态伸缩客户端机器。所以需要一层消息处理层,正确把消息路由到新的客户端。

socket函数可以实现Http协议和WebSocket协议。Netty封装了socket函数,所以可以更简单地实现Http和WebSocket。Http和WebSocket都建立在TCP之上。而Http通信只能由客户端发起,WebSocket通信可以由服务端主动发起,所以Websocket可以用于多个客户端之间的实时通信。一般来说,WebSocket用于IM场景,建立一次连接就可以完成任何时刻的实时数据传输。而Http一般用于像是简单请求啦,访问Web网站啦(Http短连接)等。Websocket是全双工通信,可以多路复用嘛,但其实Http2.0之后也是可以

image.png

传输层协议

TCP、UDP

网络层协议

IP协议

分类IP地址 image.png image.png IPv4使用点分十进制表示(把32位二进制数的每8个字节转化为一个0-255的十进制数。IP地址是有网络区域的,且IP地址是有父子结构的,所以有了A..E类地址。IP地址首位为0时称为A类地址,A类地址有7位网络地址可以使用,所以地址范围为1.0.0.0-126.255.255.255

缺点:①私有网络下没有地址层次划分,地址灵活性差 ②3类网络地址太少。

CIDR无分类地址:IP/N(N表示前N位网络地址范围(网络地址范围应该是8的倍数),解决了分类地址的灵活性问题)。而且前N为是网络地址,那么后面的都是主机号,所以我们可以根据10进行子网划分,表示在同一个网络地址下的主机段。

NAT地址转换技术:解决公网地址短缺的问题,使得少量的公网IP支持大量的客户端上网。我们先为大量主机分配私有IP,然后NAT路由器更换源主机地址为公网IP地址,发送到服务器。服务器响应的目标地址即公网地址,到达NAT路由器后再转回我们私有的地址并发送。而在同一私有网络中可能有多设备(wifi下有多手机),所以NAPT支持了IP+端口的映射。NAPT会维护IP地址与端口的映射。而IPv6有128位长度,即不需要NAT寻址了。

IPv6

image.png

传输IP报文的三种方式

直接传输:

两台主机位于同一网段,那么通过ARP表查到目标主机的MAC地址,直接组装报文并通过交换机直接转发即可。

本地网络间接传输:

客户端访问本地网络搭建的内网服务,通过路由器转发报文。

RIP:基于跳数选择路由,通过UDP广播确定主机报文到达每个路由表所需要的跳数。

OSPF:多级拓扑结构,同级拓扑中的每台路由器看做为具有相同的数据信息,每级拓扑直接通过路由器拓扑进行连接,基于IP协议头部传递路由报文。 公网间接传输 客户端访问远端网络搭建的服务,需要经过广域网中的多个路由器转发报文。

BGP:对于外网采用EBGP协议,对于内网采用IBGP协议,基于TCP协议传输信息。

广播与组播:网络层与数据链路层都支持广播与组播。

广播:有多个域,只有在特定域中的进程才能收到广播。IP多播使用D类IP地址,以1110打头。IP地址中主机号全1的报文表示某个网络下的所有主机,用于广播使用。

组播:组播地址是D类地址 可以通过管理IGMP组来控制组播范围

ip失效,如何排查

可能是ip冲突。使用arping ip查看此ip对应的mac有几个,若有多个则先用ifconfig查看本机ip,再隔离其他ip即可。也可以使用arp -scan -l得到所有主机的ip+mac,查看ip冲突。

私有IP地址是什么:本地局域网上的ip,与之对应的是公网ip

子网掩码是什么:前三字节的网络位,将ip划分为网络地址和主机地址。

image.png

ICMP协议

ICPM是IP协议的辅助协议(承载于IP之上),IP协议聚焦于性能,所以ICMP协议是用来确认IP网络是否正常工作、IP包异常诊断、链路追踪等。Ping就是基于ICMP工作的。

工作原理:ICMP报文封装在IP包中,当路由器未能发现目标主机的存在时会发送一个IMCP包经由IP链路返回给源主机。源主机分解ICMP包的首部与数据域得知出错原因或诊断消息。

ICMP消息类型

0.ICMP主动请求消息、应答消息

1.ICMP目标不可达消息、ICMP重定向消息

2.ICMP超时消息:IP包的TTL字段减为0时会被丢弃,那么路由器就会发送ICMP超时消息。

3.ICMP回送消息:用于通信的主机或路由器之间判断发送的数据包是否到达对端的消息。

ping命令就是利用ICMP回送消息实现的。

4.ICMP路由器探索消息:用于发现网络中的路由器。主机发送ICMP路由器探索消息,相连网络中的路由器会返回ICMP路由公告消息给主机。

5.ICMP地址掩码消息:获取目标主机或路由器的子网掩码。

6.ICMP邻居探索:它使用邻居探索请求消息利用多播地址向附近主机发送,

目标主机通过邻居探索消息,把它的MAC地址返回给源主机。 在IPv6中,ICMP取代了ARP,它融合了IPv4的ARP、ICMP重定向、 ICMP路由器探索消息于一体,用于定位MAC地址。 在消息类型中,具有许多子类型Code,代表具体位置的错误信息。 Ping的工作流程

Ping是一个查询报文,此报文符合ICMP协议格式。在ping命令执行时,源主机会构建一个ICMP请求数据包,ICMP包中有顺序号、发送时间(用于计算RTT往返时间),然后把ICMP请求数据包连同ip地址发送到传输层封装成IP数据包,在数据链路层封装成帧并发送到对端。对端主机收到帧,检查并提取出数据,最终交给ICMP协议。然后对端主机会构建一个ICMP应答包,保持与传来的顺序号一致,发送给源主机。若源主机没有收到ICMP应答包,则说明主机不可达。

数据链路层协议

ARP协议(仅用于IPv4中)

image.png

IP地址实现大型网络间的传输,而MAC地址实现了本地网络设备的直接传输。那么从IP地址找到Mac地址,就是ARP协议。在数据链路层,交换机只认识MAC地址,所以要想通信,IP地址与MAC地址缺一不可。

ARP协议是以目标IP地址为线索来得到目标MAC地址。主机想要获取目标主机的MAC地址时,会广播包含了目标主机IP地址的ARP数据包。同一链路上的所有主机和路由器都能接收并解析这个数据包,若它发现IP地址一致,则会把它的MAC地址塞入ARP数据包中并返回给源主机。若两台主机不在同一个链路上,则源主机会获得下一跳路由器的MAC地址。在得到目标MAC地址后,源主机会把目标IP与MAC地址的映射关系缓存起来,目标主机也会把源主机的IP与MAC地址的映射关系缓存起来,每次ARP都会重新缓存一次.

RARP:RARP服务器上注册了MAC地址与IP地址的映射,对于无法获取IP地址的嵌入式设备(打印机),我们通过RARP从RARP Server获取它的IP地址。

代理ARP:采用代理ARP的路由器可以把ARP请求转发给相邻的网段,实现了不同网段、子网节点之间的正常通信。

PPP(P2P)协议

STP协议

VLAN