TCP/UDP/HTTP

Posted evanspudding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP/UDP/HTTP相关的知识,希望对你有一定的参考价值。

都是传输层协议,

(传输层解释)

UDP

1.数据包更小,udp数据包大小小于TCP。UDP头部是8个字节,TCP是20个字节。
2、udp是无连接
3、udp在数据发送时提供更多的控制
udp有一个错误检测,带有一个16位的校验和,但是它不可靠,当udo检测到数据损坏的时候,它不会尝试恢复,在大多数情况下,丢失损坏的部分都只是被丢弃,在一些情况下,它会保留损坏的部分,但是给一个警告,UDP不会去补偿丢失的数据包,每个数据包就只会发送一次,udp也不保证数据包按顺序到达,即使网络非常繁忙,udp也不会做拥塞控制。所以我们说udp可能时轻量级的,但是它不那么可靠。

TCP

1.更大的头部
2.数据并不总是立即发送(一方面是因为拥塞控制)
3.tcp有重传机制,也有三次握手,保证数据包按顺序到达,保证数据包不丢失,同时还有做拥塞控制。

udp面向是消息,而tcp是面向流的(切分数据包,重组为流)

TCP三次握手

  1. 第一次:客户端请求服务端,客户端发送SYN(Synchronization,同步),并生成Seq(Sequence,序列,比如这里生成是1000),即,想要和服务端连接,并生成一个序列。
  2. 第二次:服务端收到发送的请求后,会回复一个SYN+ACK,ACK(Acknowledgment,答复),同时生成Seq(比如是2000,)和Ack(1001,这里是根据发送的1000+1,这样就能直到是对于客户端的回应,在实际上的应用中,不是加1,可能是加上别的数字,但是这里是为了讲解)
  3. 第三次:客户端收到服务端的答复后,会生成Seq(1001,也就是收到的Ack数字)和Ack(2001,也就是服务端序列加1),发送确认包给服务端。
    技术图片

TCP四次握手

技术图片

HTTP

Protocol(协议),涉及客户端和服务端俩端,客户端发送请求报文,服务端相应报文。
技术图片

特别注意:方法和状态码

  • 方法:get和post。
    get是一种获取的方法,post偏向于传输的方法。
  • 状态码
    技术图片
    -首部
    里面会有一个content-type,告诉传输的信息是什么类型(视频,文本等)

如何传输

1、默认端口 80
2、Http是直接提供用户访问资源的一种协议,这也能说明为什么HTTP是属于应用层。
3、HTTP也需要传输层协议来配合它定义传输数据的方式,在传输层里选择协议(和HTTP配合的是TCP)
4、每个报文只能写一个URL,即一次只能写一个资源路径,一次只能获取一个文件,服务器可以对请求逐个处理,每处理完一个就关闭连接,即非持久连接

随着互联网的发展,在Http1.1中,默认为持久连接,服务器返回消息后,客户端还可以继续发送下一个请求,没有要发送的了,客户端最后会发送Connection:close首部,进行关闭
HTTP最初设计的时候,服务器一次只处理一条信息,这是可以大大减少服务器的资源消耗,因为很多主机请求服务器,而服务器又要把他们的信息都记录下来,服务器是要崩溃的,所以服务器不会把每个状态都记录下来,也就是HTTP的无状态,但是无状态的话,比如有一个登录功能,用户每次登录都需要重新输入一遍账号密码,这样是非常麻烦的,于是出现了cookie技术,需要在首部字段加上cookie信息:(请求报文:Cookie:xxx,响应报文:set-Cookie:xxx)实现状态管理。

以上是关于TCP/UDP/HTTP的主要内容,如果未能解决你的问题,请参考以下文章