zoukankan      html  css  js  c++  java
  • 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)实现状态管理。

  • 相关阅读:
    ORACLE同义词
    eclipse如何检出项目的jar包
    2020-04-03
    十大经典排序算法
    2020-03-30
    world文档设置表格自定义序列
    2020面试记录
    java如何用一个循环实现两个有序数组合并成一个有序数组
    2020-1-8
    好物推荐之抽纸
  • 原文地址:https://www.cnblogs.com/EvansPudding/p/12750804.html
Copyright © 2011-2022 走看看