理解 http、tcp、udp

一、tcp与udp

tcp可靠, 效率低一些,可以想象为打电话。

udp不可靠,效率高,可以想象为发短信。

今天七夕,你选择打电话给你女朋友,而不选择发短信,为啥?

虽然打电话麻烦,效率低,但是打电话可靠啊,你一个短信发出去,你都不知道你女朋友收到了没有。如果是打电话,首先你通过拨号,你女朋友通过确认接听,然后你说喂,你女朋友说听得到,等等一系列,像极了tcp的握手,这样做的目的,是为了你确保你们接下来的对话是有保障的,所以大家知道tcp为什么要握手了吧,因为要建立连接进行可靠性传输。

如果你说我喜欢你,你女朋友没有给出会有,你就会在电话里面说第二遍,像极了tcp里面的失败重传。

但是发短信呢?不需要这么多麻烦,点一下发送然后就不管了,也不需要建立连接,也不需要关心对面是否收到,因为你也不知道对面收到没有。 所以udp效率很高的。

这里切记,各位如果今天七夕和女朋友通话,一定要采用打电话的方式!

 

二、http和tcp

网络传输的7层从上到下分别是: 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层

http: 在应用层
tcp:在传输层(更加底层)

二者不具备可比性

http: 基于tcp的,一个http请求,一般包括请求头,请求体等 ,请求头里面定义了长度。因为基于应用层,你可见并且可编辑,各位应该都写过发送http请求的代码,http报文大家也应该看过的。

但是tcp是工作在传输层,采用二进制机制的,应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。

之后TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已
丢失将会被进行重传。