通常使用的网络(包括互联网)是在 TCP/IP 协议族的基础上运作的,而 HTTP 属于它内部的一个子集。
不同的硬件、操作系统之间的通信,所有的这一切都需要一种规则。而我们就把这种规则称为协议(protocol)。
TCP/IP 是互联网相关的各类协议族的总称。
TCP/IP 协议族按层次分别分为以下 4 层:应用层、传输层、网络层和数据链路层。
1)应用层:决定了向用户提供应用服务时通信的活动。它包括了FTP文件传输协议(File Transfer Protocol),DNS域名系统服务(Domain Name System),HTTP协议也处于该层
2)传输层:对上层应用层,提供处于网络连接中两台计算机之间的数据传输,包含有TCP传输控制协议(Transmission Control Protocol)和UDP用户数据报协议(User Data Protocol)
3)网络层(网络互连层):用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过的路径(传输路线)到达对方计算机,并把数据包传送给对方
4)链路层(数据链路层、网络接口层):处理连接网络的硬件部分,包括控制操作系统、硬件的设备驱动、NIC网络适配器即网卡(Network Interface Card),及光纤等物理可见部分(包括连接器等一切传输媒介)
利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端每通过一层增加首部,接收端每通过一层删除首部:(以HTTP举例)
1)客户端在应用层发送HTTP请求,开始进行数据向下层传输
2)传输层(TCP协议)把从应用层接收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号(TCP首部)及端口号后转发给网络层
3)网络层(IP协议),增加作为通信目的地的MAC地址(IP首部)后转发给链路层
4)链路层增加以太网首部
5)接收端从链路层将数据向上传输,直到传输到应用层,这才算接收到由客户端发送过来的HTTP请求
这种把数据信息包装起来的做法称为——封装。
IP协议,区别于“IP地址”,负责把各种数据包传送给对方。其中两个重要的条件时IP地址和MAC地址(Media Access Control Address)。IP地址指明节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本不会更改。
IP间的通信依赖MAC地址,网络上通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站的中转设备的MAC地址来搜索下一个中转目标。此时会采用ARP协议(Address Resolution Protocol)。
ARP是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。
在到达通信目标前的中转过程中,那些计算机和路由器等网络设备只能获悉很粗略的传输路线,这种机制成为路由选择(routing),无法全面掌握互联网中的传输细节。
确保可靠性的TCP协议:TCP协议为了更容易传送大数据才把数据分割成报文段(segment),这就是字节流服务(Byte Stream Service),并且能够确认数据最终是否送达到对方。为了准确无误地将数据送达目标处,TCP协议采用了三次握手策略(Three-way handshaking),使用TCP标志(flag)——SYN(synchronize)和ACK(acknowledgement)。
三次握手策略:
1)发送端首先发送一个带SYN标志的数据包给对方
2)接收端收到后回传一个带有SYN/ACK标志的数据包以示传达确认信息
3)发送端再回传一个带ACK标志的数据包,表示“握手”结束
若握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。
负责域名解析的DNS服务:DNS提供域名到IP地址之间的解析服务。用户通常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问。DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。
URI统一资源标识符(Uniform Resource Identifier)用字符串标识某一互联网资源,而URL统一资源定位符(Uniform Resource Locator)表示资源的地点(即互联网上所处的位置),URL是URI的子集。
不是所有的应用程序都符合RFC:有一些用来指定HTTP协议技术标准的文档,它们被称为RFC(Request for Comments,征求修正意见书)。通常,应用程序会遵循由RFC确定的标准实现,可以说RFC是互联网的设计文档,要是不按照RFC标准执行,就有可能导致无法通信的状况。