java获取服务器ip(输入网址到回显页面)

输入网址到显示,期间经历哪些过程?HTTP:URL解析DNS:域名解析操作系统协议栈可靠传输TCP远程定位IP两点传输MAC出口网卡交换机路由器HTTP:URL解析浏览器第一步工作就是要对输入的URL进行解析,从而确定发送给Web服务器的请求信息。关于HTTP,可以看以下文章(由于无法给链接,关于以下文章可以私信我获取具体地址):HTTP基础知识HTTP/1.1优化TLS握手HTTPS优化HTTP/2DNS:域名解析在进行完URL解析以后,需要通过DNS域名解析获取服务器的IP。关于DNS,可以看以下文章:IP相关协议操作系统协议栈通过DNS获取到IP以后,就可以将传输工作交给操作系统协议栈。应用程序(浏览器)通过调用Socket库来委托操作系统协议栈工作。协议栈大体分为两部分:上半部分:负责接收和发送数据的TCP和UDP协议下半部分:用于控制网络包收发操作的IP协议IP协议中还包含ICMP协议(告知网络传输过程中产生的错误和控制信息)和ARP协议(获取MAC地址)。IP下面的网卡驱动程序负责控制网卡硬件,网卡负责实际的收发操作(对网线中的信号执行收发)。可靠传输TCP由于HTTP的传输层协议是TCP,因此我们还需要借助TCP的帮助,通信的双方需要建立TCP连接。关于TCP,可以看以下文章(由于无法给链接,关于以下文章可以私信我获取具体地址):TCP三次握手TCP四次挥手TCP重传TCP滑动窗口TCP流量控制TCP拥塞控制网络显形TCP三次握手TCP连接队列TCP性能优化远程定位IPTCP在执行数据传输的时候会委托IP模块将数据封装成网络包发送给通信对象。通过上图可以看出,IP协议里面需要有源IP地址和目的IP地址,由于HTTP是TCP传输,所以在IP首部中的协议后为0x06(表示TCP)。客户端有多个网卡,源IP地址如何选择?如果客户端有多个网卡(多个源IP地址),此时需要根据路由表规则来进行网卡(源IP地址)的选择。# linux中查看路由表
route -n
具体的选择步骤如下:将目标地址与路由表中的子网掩码进行与运算,算出来的结果如果和路由中的Destination一致,就是该路由对应的网卡的IP地址作为源IP地址在路由表中有一条特殊的路由,目标地址和子网掩码都是0.0.0.0(表示默认网关,Gateway即路由器的IP地址),如果其他路由都无法匹配,就会自动匹配。两点传输MAC在IP头部生成以后,需要在IP头部的前面加上MAC头部。MAC包头里需要发送方的MAC地址和接收方的MAC地址,在TCP/IP通信中,协议类型只有两种:0800:IP协议0806:ARP协议关于ARP如何获取接收方MAC地址,可以看以下文章:IP相关协议如何查看MAC地址缓存arp -a
ARP缓存大体有三部分组成:IP地址MAC地址网口名称出口网卡网络包只是内存中的一串二进制信息,无法直接发送给对方。需要网卡将数字信息转化为电路信号才能在网线上进行传输。控制网卡需要借助网卡驱动程序,网卡驱动程序从IP层获取到包以后,会将其复制到网卡内的缓冲区,接着会在其开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列。数据包封装好以后,网卡会将包转换成电信号通过网线发出去。交换机交换机是二层网络设备,目的是用来将数据包原样的转发至目的地。交换机的端口没有MAC地址。交换机中有MAC地址表,MAC地址表主要包含两个信息:设备的MAC地址设备连接在交换机的哪个端口上交换机的包接收操作网线中的电信号到达交换机的网线接口,交换机收到电信号以后,会将电信号转换成数字信号通过包尾的FCS校验,如果校验通过则放入缓冲区将包放入缓冲区后,需要查询一下包的接收方的MAC地址是否在交换机中的MAC地址表中如果MAC地址表中有匹配的记录,就通过交换电路将包发送到记录上的端口中。MAC地址表中没有如何处理?MAC地址表中如果没有对应的MAC地址,交换机就无法判断将数据包转发至端口,此时交换机会将数据包发送至除源端口以外的所有端口上。端口上的设备收到数据包以后,如果自己的MAC地址与数据包中的相符,就会接收该数据包,并作出响应,只要返回了响应,交换机就可以将它写入MAC地址表,下次就不需要将包发送至所有端口了。如果接收方是一个广播地址,交换机还是会把包发送至除源端口以外的所有端口。路由器数据包在经历过交换机以后,顺利抵达了路由器,在路由器上会被转发到下一个路由器或目标设备。路由器是三层网络设备的各个端口都有MAC地址和IP地址。路由器的收发流程路由器的端口收到电信号后,会将电信号转发给数字信号路由器对包末尾的FCS进行错误校验校验如果没有问题就检查MAC头部中的接收方MAC地址是否和自己的一致,如果是就放到接收缓冲区,否则就直接丢弃这个包路由器接收到包以后,就会去掉包中的MAC头部路由器会根据IP头部中的内容进行包的转发操作,路由器会根据路由表寻找下一跳的路由找到匹配的路由以后,会根据路由表项中的Gateway列来判断对方的地址如果网关是一个IP地址,则这个IP地址就是我们要转发的目标地址(此时还未到达终点,需要路由器继续转发)如果网关为空,则IP头部中的接收方IP地址就是最终的目标地址确定完目标IP地址以后,又会通过ARP确定MAC地址,最终将封装数据包(IP层的目标IP不会发生变化)发送出去。在整个数据包转发过程中可以看出源IP和目标IP始终不会变化,但MAC地址一直是在变化的。

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://kuaisubeian.cc/33746.html

kuaisubeian