网络基础TCP/IP
什么是协议?
计算机和网络设备要相互通信,双方就必须约定标准的通信规则
,例如由哪一端担任通信发起方、使用何种语言进行通信、如何结束通信等规则都需要事先进行确定。我们通常把这些规则称为协议
。
什么是TCP/IP?
TCP/IP是互联网相关的各类协议族(集合)的总称。
TCP/IP的分层思想
如果互联网只由一个巨大的协议统筹,那么当某个地方需要改变设计时,需要对协议中所有部分进行整体替换。分层之后,由于层间的接口都已经设计好了,因此只需要对要改动部分所在层进行内部的设计调整即可。同时,层次化也使得层功能固定,每个网络层各司其职
,协同工作,完成网络通信。
TCP/IP协议族按照层次分别可以分成如下4层:
- 应用层 —— 决定了
向用户提供服务时的通信
活动(FTP、DNS、HTTP) - 传输层 —— 为应用层提供处于网络连接中的两台计算机之间的
数据传输
(TCP、UDP) - 网络层 —— 处理在网络中流动的数据包(网络传输的最小单位),该层规定了通过何种路径将数据包传输给对方(IPv4、IPv6)
- 数据链路层 —— 处理连接网络的硬件部分
TCP/IP通信传输流
以HTTP举例说明,浏览器(客户端)在应用层发出一个HTTP请求(请求html页面),应用层将HTTP请求报文向下移交传输层,为了传输方便,传输层对收到的HTTP请求报文进行了分割,并增加一个TCP首部(主要包括报文标记序号+源、目端口号),封装好后移交网络层,网络层进行路由查找,添加上IP首部(主要包括报文标识以及源目IP地址),封装好后移交数据链路层。然后数据通过数据链路层进行物理传输。接收端的服务器在链路层接收到数据后,按序向上层发送,直到将数据传输到接收端的应用层,才算真正接收到了客户端发过来的HTTP请求。
HTTP协议
HTTP协议是对客户端和服务器端之间实现可靠性的传输
文字、图片、音频、视频等超文本数据
的规范,格式简称为“超文本传输协议”。两台计算机之间使用HTTP协议进行通信时,在一条通信线路上必定有一端是客户端,另一端是服务端。HTTP协议通过请求和响应的交换达成通信。
HTTP请求响应过程
- 浏览器访问URL(http://www.someschool.edu/someDepartment/home.index)
- DNS服务器将域名www.someschool.edu映射为真实的服务端IP地址
- HTTP客户端进程在80端口(默认)发起一个到服务器的TCP连接,在客户端和服务端进程中都会有一个Socket与其绑定。
- HTTP客户端通过Socket向服务器发送一个HTTP请求报文。在HTTP请求报文首部通过路径
someDepartment/home.index
指定了请求的资源。 - HTTP服务器通过它的Socket接受客户端发来的请求报文,并对请求进行解析,从存储器(RAM或磁盘)中检索出与请求的资源对象
home.index
相关的所有资源,然后将它封装到HTTP响应报文中,通过Socket发给客户端。 - HTTP服务器发送完响应报文后,客户端接受完响应报文后,断开TCP连接。
- HTTP客户端从响应报文中提取出HTML文件,并循环检查出报文中其他内部对象。
- 检查完成后,HTTP客户端把对应的请求资源通过浏览器进行视图解析,呈现给客户。
HTTP协议和TCP/IP中其他协议的关系
- DNS(Domain Name System) —— 提供域名到IP地址的
双向解析
- TCP —— 提供
可靠
(三次握手、四次挥手)的字节流服务
(为了方便传输,将大块数据分割成报文段) - IP —— 通过
路由转发
(通过地址解析协议——ARP协议实现IP地址到MAC地址的转换)确保将各种数据包传送给对方。
下图详细地阐述了使用HTTP协议进行通信的整个过程:
参考资料
《图解HTTP》 by 上野宣