首先呢,一台电脑想要上网,必需要有四个参数:自身的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响应后,可将网页内容渲染出来。服务器
想要断开链接则进行四次挥手。网络