本文正在参与 “网络协议必知必会”征文活动
使用HTTP协议访问客户端
客户端和服务器端是通过HTTP协议进行交互的
- 客户端:请求访问数据资源的一端
- 服务器端:提供数据资源的一端
网络基础TCP/IP
要想理解 HTTP,那么有必要先了解TCP/IP协议族
TCP/IP 协议族
通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的,TCP/IP是互联网相关各类协议的总称
TCP/IP 的分层管理
TCP/IP协议族里可分为:应用层、传输层、网络层、数据链路层
-
应用层应用层决定了向用户提供应用服务时通信的活动
TCP/IP协议族内预存了各类通用的应用服务。比如,FTP(File Transfer Protocol,文件传输协议)和DNS(Domain Name System,域名系统)服务就是其中两类,HTTP协议也处于这一层 -
传输层传输层对上层应用层提供处于网络连接中的两台计算机之间的数据传输\
在传输层有两个性质不同的协议:
TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议) -
网络层网络层用来处理在网络上流动的数据包
数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线
-
数据链路层(网络接口层)用来处理连接网络的硬件部分
包括控制操作系统、硬件的设备驱动、
NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在数据链路层的作用范围之内
TCP/IP 通信传输流
利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则往应用层往上走。
举个🌰:以HTTP为例
1、客户端在应用层(HTTP协议)发出一个HTTP请求
2、在传输层(TCP协议)把应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层
3、在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层,这样一来,发往网络的通信请求就准备齐全了
4、服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的 HTTP请求
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去。这种把数据信息包装起来的做法称为封装。
与HTTP关系密切的协议:IP、TCP、DNS
IP协议(负责传输)
IP协议的作用是把各种数据包传送给对方
要保证确实传送到对方那里,则需要满足各类条件。其中两个重要的条件是IP地址和MAC地址。IP间的通信主要依赖MAC地址,通过ARP协议凭借MAC地址进行通信
-
IP地址:指明了节点被分配到的地址(IP地址可变) -
MAC地址:指网卡所属的固定地址(MAC地址不可变) -
ARP协议:一种用以解析地址的协议,根据通信方的IP地址可以反查对应的MAC地址
TCP协议(确保可靠性)
TCP协议的作用是提供可靠的字节流服务
- 字节流服务:为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。
TCP协议采用了三次握手策略将数据准确无误地送达目标处。握手过程中使用了TCP的标志(flag) --——SYN(synchronize)和ACK(acknowledgement)。
发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。 若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。
DNS(负责域名解析的服务)
DNS服务的作用是供域名到IP地址之间的解析服务
用户通常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问。因为与IP地址的一组纯数字相比,用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。DNS协议提供通过域名 查找IP地址,或逆向从IP地址反查域名的服务
各种协议与HTTP协议的关系
URI和URL
URI:用字符串标识某一互联网资源URL:表示资源的地点,URL是URI的子集