TCP/IP网络基础


网络基础TCP/IP

什么是协议?

计算机和网络设备要相互通信,双方就必须约定标准的通信规则,例如由哪一端担任通信发起方、使用何种语言进行通信、如何结束通信等规则都需要事先进行确定。我们通常把这些规则称为协议

什么是TCP/IP?

TCP/IP是互联网相关的各类协议族(集合)的总称。

image-20210622145341580

TCP/IP的分层思想

如果互联网只由一个巨大的协议统筹,那么当某个地方需要改变设计时,需要对协议中所有部分进行整体替换。分层之后,由于层间的接口都已经设计好了,因此只需要对要改动部分所在层进行内部的设计调整即可。同时,层次化也使得层功能固定,每个网络层各司其职,协同工作,完成网络通信。

TCP/IP协议族按照层次分别可以分成如下4层:

  • 应用层 —— 决定了向用户提供服务时的通信活动(FTP、DNS、HTTP)
  • 传输层 —— 为应用层提供处于网络连接中的两台计算机之间的数据传输(TCP、UDP)
  • 网络层 —— 处理在网络中流动的数据包(网络传输的最小单位),该层规定了通过何种路径将数据包传输给对方(IPv4、IPv6)
  • 数据链路层 —— 处理连接网络的硬件部分

TCP/IP通信传输流

以HTTP举例说明,浏览器(客户端)在应用层发出一个HTTP请求(请求html页面),应用层将HTTP请求报文向下移交传输层,为了传输方便,传输层对收到的HTTP请求报文进行了分割,并增加一个TCP首部(主要包括报文标记序号+源、目端口号),封装好后移交网络层,网络层进行路由查找,添加上IP首部(主要包括报文标识以及源目IP地址),封装好后移交数据链路层。然后数据通过数据链路层进行物理传输。接收端的服务器在链路层接收到数据后,按序向上层发送,直到将数据传输到接收端的应用层,才算真正接收到了客户端发过来的HTTP请求。

image-20210622150952266

HTTP协议

HTTP协议是对客户端和服务器端之间实现可靠性的传输文字、图片、音频、视频等超文本数据的规范,格式简称为“超文本传输协议”。两台计算机之间使用HTTP协议进行通信时,在一条通信线路上必定有一端是客户端,另一端是服务端。HTTP协议通过请求和响应的交换达成通信。

image-20210622153737971

HTTP请求响应过程

  1. 浏览器访问URL(http://www.someschool.edu/someDepartment/home.index)
  2. DNS服务器将域名www.someschool.edu映射为真实的服务端IP地址
  3. HTTP客户端进程在80端口(默认)发起一个到服务器的TCP连接,在客户端和服务端进程中都会有一个Socket与其绑定。
  4. HTTP客户端通过Socket向服务器发送一个HTTP请求报文。在HTTP请求报文首部通过路径someDepartment/home.index指定了请求的资源。
  5. HTTP服务器通过它的Socket接受客户端发来的请求报文,并对请求进行解析,从存储器(RAM或磁盘)中检索出与请求的资源对象home.index相关的所有资源,然后将它封装到HTTP响应报文中,通过Socket发给客户端。
  6. HTTP服务器发送完响应报文后,客户端接受完响应报文后,断开TCP连接。
  7. HTTP客户端从响应报文中提取出HTML文件,并循环检查出报文中其他内部对象。
  8. 检查完成后,HTTP客户端把对应的请求资源通过浏览器进行视图解析,呈现给客户。

HTTP协议和TCP/IP中其他协议的关系

  • DNS(Domain Name System) —— 提供域名到IP地址的双向解析
  • TCP —— 提供可靠(三次握手、四次挥手)的字节流服务(为了方便传输,将大块数据分割成报文段)
  • IP —— 通过路由转发(通过地址解析协议——ARP协议实现IP地址到MAC地址的转换)确保将各种数据包传送给对方。

下图详细地阐述了使用HTTP协议进行通信的整个过程:

image-20210622152400111

参考资料

《图解HTTP》 by 上野宣