HTTP简介(TCP/IP协议族简介)
? 我们在web browser输入URL后便可以看到web页面,我们作为用户端(client)将访问请求发送给服务器端(server),服务器将我们获取的文件资源(source)传送给我们的过程就建立在HTTP之上。
? HTTP全称Hypertext Transfer Protocol,超文本传输协议,但其实HTTP翻译成传输协议并不严谨,我的好伙伴刘指导将其翻译为超文本承载协议我觉得也是非常形象的,因为整个通信过程是需要多个协议以及软件硬件层面的协助工作才完成的,后面会提到TCP/IP协议族。协议的意思是规则的预定,也就是client与server在传输交互的过程中都要遵守的约定和准则。
? 1.2.1 TCP/IP协议族的作用
? TCP/IP协议族一般指互联网相关的协议族的总称,它包含多种多样的内容。从电缆、线路这些硬件到IP地址选定方式、双方建立通信的顺序以及web页面显示需要处理的步骤等软件层面的内容。计算机和网络之间要互相通信,双方就要遵守相同的规则,因此TCP/IP协议族的作用就是让不同系统不同设备之间实现资源的交换。
? 1.2.2 TCP/IP的分层管理
? TCP/IP协议族运用分层管理的原因不是为了复杂化问题而是为了让问题更加简单。当不同设备进行资源交换时,很可能会因为其硬件或系统的不同而导致其无法正常通讯。这时只需要改动相应的板块即可成功实现通讯。
? 一般来说TCP/IP协议族分为四部分
应用层 该层决定了向客户提供应用服务时通信的活动。其中预存了各类通用的应用服务。比如FTP(File Transfer Protocol)以及DNS(Domain Name System)服务就是其中两类。HTTP也属于这一层面。
传输层 该层对上层应用层提供处于网络连接中的两台计算机的数据传输服。在传输层中有两种不同的协议:TCP(Transmission Control Protocol,传输控制协议)以及UDP(User Data Protocol,用户数据包协议)
网络层(又名网络互连层) 该层处理网络上流动的数据包,数据包是网络传输中最小的数据单位,网络层规定了传输路线,也就是从A怎么到B,并且将数据包从A传输至B。在网络通信中若到达对方需要多台计算机或网络设备进行传输时,网络层就会决定走哪一条线路即规定传输路线。
链路层(又名数据链路层,网络接口层) 这部分属于整个过程中的硬件部分,包括操作系统,设备驱动,NIC(Network Interface Card,俗称网卡),光纤灯硬件设施。只要是硬件范畴的都属于链路层。
? 1.2.3 TCP/IP通信传输
? 前文提到过HTTP并没有涉及传输这一过程,其实HTTP更像是快递盒需要其他工具或协议来完成快递盒的运输。这一过程就是TCP/IP协议族共同完成的。
? 可以通过这种图片简单了解流程(图片来源:《图解HTTP》)
?
? 正如前面所说的HTTP就像快递包装盒,而在其他层的帮助下成功地从发送端运到了接收端。在发送端每经过一层就会在外面被打上一层”包装纸“,这个过程叫封装(encapsulate)而当“货物”到达接受端时每经过一层则会撕下一层包装纸,最终到达用户(client)手中时便是自己需要的资源(当然可能是由client传向server但在每次传输中必有一个发送端和一个接收端理解即可)。
? 1.2.4 IP
? 我们常常说的ip其实是ip地址,这里的IP(Internet Protocol)则是一种协议,位于网络层,其作用就是将各种数据包传给对方,要想这一过程进行顺利,双方就必须满足各类条件。最重要的两点就是ip地址和mac地址,ip地址就是互联网协议地址而MAC(Media Access Control Address)地址是NIC(Network Interface Card)的物理地址,一般来说ip地址可变而MAC地址不变。
? ip间的通信依赖于MAC地址,这时候就需要用到ARP协议将ip地址解析成MAC地址,以便计算机和网络设备找到目的地和路径。
? 1.2.5 TCP
? TCP(Transmission Control Protocol)位于传输层,提供可靠的字节流服务(Byte System Server)。其实就是将大块的数据文件分割成报文段(segment)为单位的数据包。为什么说是可靠的,这就要提到***三次握手(three-way handshaking)***,TCP在建立通信传输数据时会使用到TCP标志(flag),发送端会在数据包中插上SYN(synchronize)标志,接收端成功收到数据则会返回一个带有SYN/ACK(acknowledgment)标志的数据包,发送端收到后再发送一个带ACK的数据包结束这次传输,俗称三次握手。当然除此之外TCP还有其他方式保证传输的可靠性,这里不做赘述。
? 1.2.6 DNS
? DNS(Domain Name System)服务位于应用层,提供ip地址之间的解析服务。我们常用的网址,其实是为了方便人们理解记忆,但是计算机并擅长理解字母和句子,他们更适合理解数字的含义,因此DNS就是将域名解析成ip地址再传给计算机和网络设备以便通信建立。
? 因为HTTP是直接与发送端、接收端直接接触了一个协议,再HTTP中发送端一般称为客户端(client),接收端是服务器(server),HTTP与他们直接对话,因此在内容上也与他们直接挂钩。
? 简单来描述流程就是客户端发送请求报文,服务器接收到请求报文后进行处理再发送响应报文给客户端,传输过程前面也说过需要协议族一起完成,也就是客户端和服务器写信内容是HTTP报文但也需要其他工具人进行运输。当然HTTP相关知识还有很多比如报文内容,cookie,管线化等等。
?
?
?
?
?
?
?
。
作者:Zephyra
?
?
?
?
?
?
?
|