Java网络编程

本文深入解析了网络数据传输流程,包括ARP和RARP协议、同一网段与不同网段的数据传输机制。同时介绍了HTTP协议及其工作原理,包括GET和POST的区别,以及HTTPS的安全性。此外,还探讨了TCP的三次握手和四次挥手,对比了TCP与UDP的特点和应用场景。
摘要由CSDN通过智能技术生成

网络编程:
网络模型和传输流程:
在这里插入图片描述
在这里插入图片描述
网络数据传输的流程:
在这里插入图片描述
ARP 协议是处于数据链路层与网络层之间的一种协议,也叫作地址解析协议。它将 IP 地址转换为 MAC 地址。
RARP 协议,就是 Reverse ARP,与 ARP 协议相同,是将 MAC 地址转换为 IP 地址的协议。
具体流程:
2. 同一网段的数据传输
假设在同一网段中的两台主机A和B想要通信,A如果想给B发送数据,必须先将B的IP地址与它的子网掩码做与运算得出B所在的网络号,A将所得的B的网络号和自己的做比较,以判断B和A是否在同一网段中,如果相同,则在同一网段,如果不同,则不在同一网段。如果A和B在同一网段,但是A没有B的IP地址所对应的MAC地址信息,则利用第二层广播形式发送ARP请求报文,在报文中包含了A(源主机)和B(目标主机)的IP地址信息。同一网段中的所有主机都可以收到并分析ARP报文,如果发现目标主机的IP地址和自己的不同,则丢弃报文,否则,就向A(源主机)发送ARP请求响应报文,报文的内容包括B(目标主机)的MAC地址。
为了减少广播量,网络设备通过ARP表在缓存中保存IP与MAC地址的映射信息。在一次 ARP的请求与响应过程中,通信双方都把对方的MAC地址与IP地址的对应关系保存在各自的ARP表中,以在后续的通信中使用。ARP表使用老化机制,删除在一段时间内没有使用过的IP与MAC地址的映射关系。
如果中间要经过交换机,交换机内部有一个数据库专门用来保存所有端口对应的网卡MAC地址。根据交换机的工作原理,它通过分析Ethernet包的包头信息(其中包含原MAC地址,目标MAC地址,信息的长度等),取得目标B的MAC地址后,查找交换机中存储的地址对照表(MAC地址对应的端口),确认具有此MAC地址的网卡连接在哪个端口上,然后将数据包发送到这个对应的端口,也就相应的发送到目标主机B上。
3. 不同网段的数据传输
在不同网段的数据传输中, 主机A并不需要获取远程主机C的MAC地址,而是将IP分组发给默认网关,由网关网络层完成转发过程。如果A(源主机)没有默认网关MAC地址的缓存记录,则它会通过ARP协议获取默认网关的MAC地址,因此在A的ARP表中只能观察到网关的MAC地址记录,而观察不到远程主机C的 MAC地址。
(1)A要发送数据包到C,如果A没有C的IP地址,则A首先要发出一个DNS请求,路由器B或者DNS域名解析服务器会给A回应PC的IP地址,这样A关于数据包网络层和传输层的IP地址信息就全了:源IP地址:A,目的IP地址:C。
(2)接下来A要知道如何到达C,A会发送一个ARP的地址解析请求,发送这个地址解析请求,不是为了获得目标主机C的MAC地址,而是把请求发送到了路由器B中,然后路由器B会将自己的MAC地址会发送给源主机A,这样A的数据包的数据链路层信息也全了,源MAC地址:A的MAC地址,目的MAC地址:路由器B的MAC地址。
(3)然后数据会到达交换机A,交换机A看到数据包的数据链路层的目的MAC地址,是去往路由器B的,就把数据包发送到路由器B,路由器B收到数据包,首先查看数据包的网络层目的IP地址,根据路由选择算法得到一张路由表,如果在自己的路由表中有去往C的路由,说明这是一个可路由的数据包。
(4)接下来就要进行路由传送了,首先,由路由器B对报文进行IP重组或分组,修改数据链路层的报头——将源MAC地址改为自己的,将目的MAC地址改为下一跳路由器C的MAC地址。将数据报传送给路由器C,路由器C重复路由器B的工作,直至到达目的主机C所在的网络,再利用局域网通信,找到相应的主机C。
(5)从路由器B到路由器C再到主机C的过程在一个庞大的网络系统中,在这个网络中还要封装一系列的协议,以完成数据的正确传输。
(6)如果在传输期间丢包或者到达主机C的数据包有错误,此时就需要发挥传输层TCP协议的作用了,对丢失的数据包进行重传。
总结:数据传输的过程在主机A(源主机)中,就是利用遵循的某种协议逐层为数据添加报头,添加报头是为了找到目的主机并如何将数据安全正确的传输到目的主机。
在目的主机中,就是自下向上逐层解报头过程,根据传输来的报头

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值