1. TCP/IP协议族
现在网络技术中的所有协议总称为TCP/IP协议族,TCP/IP协议族采用分层结构,一般我们分为五层从上到下分别是用户层,运输层,网络层,数据链路层,物理层。而Http协议处于应用层。
2. 五层网络工作方式(Http版)
用户层
用户层将需要传输的数据包装在Http报文中(其中包括自己的端口号,端口号一般指电脑上运行的一个程序,端口与端口之间的网络通信,可以看作程序与程序之间的通信),交给传输层。
运输层
传输层根据情况选择TCP协议或者是UDP协议,我们假定选择TCP协议,那么传输层就会将这个Http报文包装在TCP协议中形成一个包,并将这个包发给网络层。
TCP协议是针对字节流的,说白了就是字节流就像一段链子,从中间断开再重新接上没有什么影响,所以TCP报文可以被分为多个报文段。而UDP协议不是针对字节流的,它就不能分段。
TCP采用三次握手确认连接。
发送端-》SYN=1,ACK=0,seq=i -》接收端
接收端-》SYN=1,ACK=1,ack=i+1,seq=j -》发送端
发送端-》ACK=1,ack=j+1,seq=i+1-》接收端
网络层
在网络层中,我们需要根据目的主机和端口得出其IP地址(IP地址一般是主机所在网络的网络管理员动态分配的,当主机联网时,就分配一个,而不是像MAC已经确定了),并将自己的和目的的IP地址封装在IP报文头,并将这个报文传给下一层数据链路层。
数据链路层
数据链路层根据本机网卡的MAC地址(一般采用ARP协议从IP地址解析出MAC地址,网卡在电脑出厂时就已经确定了,所以每台机器的MAC在不更换网卡这样的硬件的情况下是不变的,IP地址和MAC地址是配对的),如果此时本机缓存中有目的主机的MAC地址(之前才发送信息没多久),那么会直接将目的主机的MAC地址封装在报文中,如果没有且ARP协议也没解析出来,那说明本机也不知道,通过目的IP地址和子网掩码的与操作可以得到目的主机所处的网络地址。如果该网络地址就是本机所在的网络它会以广播的形式向与自己同网络的主机进行报文广播,与主机同处一个网络的所有主机都会收到这个广播,并对比这个报文中目的IP与自己是否相同。如果不是本机所在的网络,那么本机只好将报文发给网关(说白了就是一个网络的大门)。网关如果发现目的网络就在网关大门的附近,会直接转发给目的网络的网关,但是如果比较远,网关就只好采用路由的方式进行多次转发(路由一般都会维护一个路由表,路由表有它所知道的网络的转发路径,如果在路由表上查到这条路径刚好可以到达目的网络,那么它就会按照路径进行转发,如果没查到,就只能转发给默认路由器)。
3. DNS服务
将域名(一般我们接触比较多的就是网站地址如www.baidu.com)翻译为目的服务器的IP地址
4. URI和URL
我们一般见到的网络地址域名,一般都是URL(统一资源定位符)。既然是定位符,那么它就和想要访问的资源的地址相关。
URI全称为统一资源标识符,标记,Label!那说明这个URI就是标记的想要访问的资源本身
URI格式一般如下图所示:
5. RFC标准
RFC标准使用规定HTTP协议技术内容的标准,如果你的服务器或者客户端(浏览器)不遵守这个标准,就有可能造成其他服务器和客户端无法和你进行正常通信,你不遵守,但是大部分人都遵守,别人就不懂你发过来的是什么东西。