面试总结 - HTTP、TCP和UDP的理解

TCP是底层通讯协议,定义的是数据传输和连接方式的规范
HTTP是应用层协议,定义的是传输数据的内容的规范
HTTP协议是建立在TCP协议之上的一种应用。
HTTP协议中的数据是利用TCP协议传输的,所以支持HTTP也就一定支持TCP

网络传输协议?

网络传输协议有Http,UDP和TCP。
其中UDP和TCP属于长连接,Http属于短连接。
TCP:不会丢失数据,更安全,所以用于聊天。
UDP:传输速度更快,但是容易丢数据包,所以用于网络游戏和局域网游戏。
除了聊天和游戏,我们用http超文本传输协议。
Socket:是一个用于传输网络数据的工具。大文件传输只能用Socket。
它能传输什么数据,取决于用什么协议,TCP和UDP,甚至是Http。

利用Socket工具发Http请求,是断点续传。
当上传文件过大的时候,我们一定要字节压缩,把一些冗余的信息去掉。

Socket:是一个用于传输网络数据的工具,创建Socket连接时,可以指定使用传输层协议,
Socket可以支持不同的传输层协议,TCP或者UDP。

常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的 Socket,针对于面向连接的TCP服务应用;数据报式 Socket 是一种无连接的 Socket ,对应于无连接的UDP服务应用。

TCP/IP是互联网相关的各类协议族的总称
TCP/IP协议族按层次分别分为以下4层:应用层、传输层、网络层和数据链路层。

应用层

应用层决定了向用户提供应用服务时通信的活动。
TCP/IP协议族内预存了各类通用的应用服务。比如,FTP(File Transfer Protocol,文件传输协议)和DNS(Domain Name System,域名系统)服务就是其中两类。
HTTP协议也处于该层。

传输层

传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。
在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)。

网络层(又名网络互连层)

网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。
与对方计算机之间通过多台计算机或网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。

链路层(又名数据链路层,网络接口层)

用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分(还包括连接器等一切传输媒介)。硬件上的范畴均在链路层的作用范围之内。
面试总结 - HTTP、TCP和UDP的理解

我们用HTTP举例来说明,首先作为发送端的客户端在应用层(HTTP协议)发出一个想看某个Web页面的HTTP请求。
接着,为了传输方便,在传输层(TCP协议)把从应用层处收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层。
在网络层(IP协议),增加作为通信目的地的MAC地址后转发给链路层。这样一来,发往网络的通信请求就准备齐全了。
接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。当传输到应用层,才能算真正接收到由客户端发送过来的HTTP请求。