计网学习总结(一)

898 阅读4分钟

首先呢,一台电脑想要上网,必须要有四个参数:自身的IP地址、子网掩码、网关的地址、DNS服务器的地址。我们可以静态手动配置这四个参数,但这样会导致框死了,不够灵活。因此,可通过DHCP协议动态得到自身的IP地址和其他的三个参数。好了,现在四个参数都有了,再看一下怎么通信的。比如在浏览器输入一个域名,我们通过DNS协议可以得到该域名的IP地址。这个IP地址有什么用呢?主要是比较本机与域名主机是不是处在一个子网络。这里要用到子网掩码,把本机的IP地址和域名的IP地址分别和子网掩码进行AND运算,结果相同意思就是处在一个子网络,结果不同意思就是不处在一个子网络,主机的数据包想要发送到域名主机,需要通过网关转发。假如本机和域名主机处在一个子网络,是怎么通信的呢?两台主机之间想要实现通信,需要IP地址和MAC地址。这时候我们已经知道了域名主机的IP地址,MAC地址需要通过网络层的ARP协议来获取。那怎么通过ARP协议来获取到域名主机的MAC地址呢?ARP协议发出一个数据包,此时是处于网络层,要给标头加上本机IP地址和域名主机IP地址(这两者现在是已知的),之后传到数据链路层,数据链路层的作用是给这个数据包加上MAC地址,这里就用到“广播”的方式,本机的MAC地址是已知的,接受者的MAC的地址我们就写成FF:FF:FF:FF:FF:FF,这表示是一个广播地址,与本机在同一个子网络的所有主机都会收到这个包,然后它们会取出这个包里面的IP地址来跟自身的IP地址进行比对,如果一样,就会做出回应,报告自己的MAC地址,否则就丢弃这个包。那么现在,在我们有了MAC地址后,又该怎么具体实现通信呢?本机在经过传输层、网络层、数据链路层分别给标头加上端口号、IP地址、MAC地址后形成一个以太网数据包,再经过物理层(物理层主要是负责传送0、1的电信号),传送到所在子网络的每一个主机,主机把数据包里的MAC地址和自身的MAC地址进行比对,如果相同,就接受这个包进行进一步的处理,不然就丢弃。

说到这里,再来说一下,假如本机IP地址和域名主机IP地址不在一个子网络又是怎样?在前面所说必须知道的四个参数里有一个是网关的IP地址,这个时候就派上用场了。同样地,我们通过ARP协议可以得到所在网关的MAC地址。然后本机发出数据包时,最后形成的以太网数据包是发往本机所在的网关A,网关A再通过路由协议,通过网关转发,转发到域名主机所在的网关B,最后到达域名主机,进行进一步处理。 但在进行真正地传输数据之前,我们先要进行TCP连接,进行三次握手,这个时候传送的包里是不包含的数据的,我们仅仅是为了确认是否能让数据可靠地进行传输。在三次握手后,才开始真正传输数据,此时开始进行http连接,服务器端接受到带有数据的数据包,开始进行上文所说地“进一步处理”。首先根据数据包IP标头的序号,将数据包重新拼合起来,读出里面的http请求,再做出http相应,通过tcp协议发回来。本机收到http响应后,可将网页内容渲染出来。

想要断开连接则进行四次挥手。