图解计算机网络那些事儿
1. 介绍TCP/IP协议
TCP/IP不是一个协议,而是一个协议族的统称。里面包括IP协议、IMCP协议、TCP协议..传统上来说 TCP/IP 被认为是一个四层协议
image.png平常我们大部分时间都工作在应用层,下层的事情不用我们操心;其实TCP/IP的工作原理,通俗一点讲就是,一个主机的数据要经过哪些过程才能发送到对方的主机上。
image.pngTCP/IP分层的好处是把各个相对独立的功能解耦,层与层之间通过规定好的接口来通信。如果以后需要修改或者重写某一个层的实现,只要接口保持不变也不会影响到其他层的功能。接下来,我们将会介绍各个层的主要作用。
- 应用层
应用层一般是我们编写的应用程序,其决定了向用户提供的应用服务。应用层可以通过系统调用与传输层进行通信。
处于应用层的协议非常多,比如:FTP(File Transfer Protocol,文件传输协议)、DNS(Domain Name System,域名系统)和我们本章讨论的HTTP(HyperText Transfer Protocol,超文本传输协议)等。 - 传输层
传输层通过系统调用向应用层提供处于网络连接中的两台计算机之间的数据传输功能。
在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。 - 网络层
网络层用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(传输路线)到达对方计算机,并把数据包传输给对方。 - 链路层
链路层用来处理连接网络的硬件部分,包括控制操作系统、硬件设备驱动、NIC(Network Interface Card,网络适配器)以及光纤等物理可见部分。硬件上的范畴均在链路层的作用范围之内。
数据包封装
上层协议数据是如何转变为下层协议数据的呢?这是通过封装(encapsulate)来实现的。应用程序数据在发送到物理网络之前,会沿着协议栈从上往下传递。每层协议都将在上层协议数据的基础上加上自己的头部信息(链路层还会加上尾部信息),以为实现该层功能提供必要的信息
image.png
2. 介绍UDP和TCP协议的区别
TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于广播和细节控制交给应用的通信传输。
TCP:
1、连接:数据传输可靠,传输之前需要连接
2、大小:数据通过IO流的方式进行传输,可以传输无限大小的数据
3、c/s:有服务端和客户端之分,也就是平时说的C/S(Client/Server)结构
4、相比UPD传输速度
UDP:
1、连接:发送数据不需要创建连接,分为发送端和接收端
2、大小:发送数据以包为单位进行发送,每个包的大小限制在64k
3、传输速度块,可能会造成数据丢失
4、相比TCP协议来说传输速度更快
5、应用:直播,视频通话
3. 介绍DNS域名解析过程
客户端构造解析请求,并将解析请求发送到DNS服务器,DNS服务器查询该域名是否在该服务器所管辖的区域内,如果在则查询是否有该名称,存在该名称则从DNS数据库中取出相应的IP地址并返回给DNS可客户端,若不存在则将“名称不存在”信息返回给DNS客户端。如果不在该服务器的管辖范围内,则可用两种方法进行处理。
1)递归:将解析请求转发给下一个DNS服务器进行递归查询并将结果返回给客户端
2)迭代:产生包含下一个DNS服务器IP地址的响应并返回给DNS客户端
image.png
4.介绍HTTP协议
HTTP是超文本传输协议,是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。
HTTP与TCP/IP、DNS的关系
当客户端访问Web站点时,首先会通过DNS服务查询到域名的IP地址。然后浏览器生成HTTP请求,并通过TCP/IP协议发送给Web服务器。Web服务器接收到请求后会根据请求生成响应内容,并通过TCP/IP协议返回给客户端。
流程图如下所示:
其他HTTP相关知识可参考我的文章:
HTTP长连接、短连接究竟是什么?
https://www.jianshu.com/p/a104bfc05d7f
TCP三次握手详解及释放连接过程
https://www.jianshu.com/p/200bb104dc09