• 传输层的TCP\UDP协议


    1)TCP和UDP的区别
    1.1TCP是面向连接,UDP无连接的
    1.2 TCP是可靠的,UDP是不可靠的
    1.3 TCP是面向字节流的,UDP是面向报文的
    1.4 TCP是支持点对点通信,UDP是点对点,一对一、一对多、多对多的通信
    1.5 TCP的首部开销(20字节)比UDP的首部开销(8字节)大
    1.6TCP有流量控制,UDP没有流量控制

    2)TCP的三次握手

    三次握手指的是:建立一个TCP连接时,需要客户端和服务器总共发送三个包。
    三次握手的目的是:连接服务器的指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换TCP窗口大小。

    第一次握手:建立连接,客户端向服务器发送请求报文段,将SYN置为1,客户端进入SYN_SEND状态,等待服务器确认
    第二次握手:服务器接收到客户端的SYN 报文段,对这个SYN报文段进行确认;同时自己发送SYN请求信息,将SYN置为1;服务器将上述所有信息放入报文段(SYN+ACK)一起发送给客户端,此时服务器进入SYN_RECV状态
    客户端接收到SYN+ACK报文段,向服务器发送ACK报文段,发送完毕后客户端和服务器都进入ESTABLISHED状态,完成三次握手


    3)为何要三次握手,不是两次
    目的:防止已失效的连接请求又传到服务器端造成错误。
    原因:若服务端在没有确定 客户端 是否对自己做出正确应答的情况下就建立连接,如果客服端的 请求报文 因意外没有及时送达,如果服务器收到该请求时,以为客户端要建立连接,就立刻进入Establish状态,服务器端一直等待客户端的数据传送,造成资源的浪费。

    4)TCP的四次挥手

    第一次挥手:客户端数据传输完毕需要断开连接,发送报文段并停止再次发送数据,主动关闭TCP连接,进入FIN-WAIT-1状态
    第二次挥手:服务器接收到客户端发送的报文段后,进入关闭等待状态,客户端到服务器的连接释放,客户端收到服务器的确认后,进入FIN-WAIT-2状态,等待服务器发出连接释放的报文段
    服务器的数据传输完毕后,向客户端发送连接释放报文段,服务器进入最后确认状态,等待客户端的确认
    客户端收到服务器的连接释放报文段后,发出确认报文段,进入等待状态,经过等待时间后进入关闭状态,四次握手结束

    5)为何是四次挥手
    前两次挥手断开一个方向的连接,后两次挥手断开另一个方向的连接

    6)Time_Wait的意义,为和要等待2MSL
    主动关闭端 在TIME_Wait后,等待两倍的Msl时间进入Close状态,主要是保证服务器端能够收到客户端的确认应答;如果客户端发送完应答后直接进入Close状态,如果应答丢失,服务器端会超时请求重传 连接释放请求,但是此时客户端已经关闭了,那么服务器端就没法收到正确的应答,无法关闭服务器。

    7)TCP协议如何保证传输的可靠性
    主要是通过 数据包校验、应答机制、超时重发、数据包的失序重排、丢失重复的数据、流量控制等实现。
    数据包校验就是: 检测数据在传输过程中是否发生变化,如果校验包出错,那么接收方丢弃报文段并且不给出应答(响应),那么发送方就会超时重传。
    超时重传:当TCP发出一个段时,会启动一个定时器,如果在一定的时间内没有收到应答,那么就会重新发送这个报文段。
    确认应答:TCp的一端发出报文段,另一端收到后给出应答响应。
    失序重排:TCp的报文段作为IP 的数据报传输,IP的数据报达到可能是失序的,因此TCP 的报文段到达也可能是失序的,因此TCP会对失序的报文段进行一个重新的排序
    丢弃重复的数据:当接收方收到重复的报文段的时候对其进行丢弃
    流量机制:TCP连接的每一端各有一个固定大小的缓冲空间,接收方只允许发送方发送它的缓冲区所能接纳的数据。这是防止较快的主机使较慢的主机缓冲区溢出。TCP的流量控制是通过可变大小的滑动窗口协议来实现的。

    8)从输入网址URL到获得页面的整个过程
    8.1)浏览器查询DNS服务器,获取域名对应的IP地址;搜过过程是–先搜索浏览器本身的DNS缓存–》搜索操作系统的DNS缓存–》读取本地的host文件–》查询本地的DNS服务器;在查询本地的DNS服务器的时候,先看域名是否存在本地 配置 区域资源中,如果存在,返回完成域名解析;若不存在,看DNs服务器是否缓存了该网址的映射关系,,那么调用IP地址映射,完成于域名解析。如果不存在的化,要根据相应的设置完成递归查询或者迭代查询。
    8.2)浏览器获得域名对应的IP地址后,浏览器向服务器发起建立连接请求,发起TCP的三次握手
    8.3)TCP/IP连接建立起来后,浏览器向服务器发起HTTP请求
    8.4)服务器收到请求后,根据路径参数映射到特定的处理机进行处理,将处理结果和相应的视图返回给浏览器
    8.5)浏览器解析并且渲染视图,如果遇到js等静态资源的引用,则重复以上的步骤,继续向服务器请求资源
    8.6)浏览器根据请求到的资源和数据进行渲染页面,最终向用户呈现一个完整的页面

    注意:输入URL但是没有到指定的网址,是什么原因呢
    1)网络断开
    2)DNS解析出错**(无法解析)**
    3)网页被劫持
    4)后台页面加载不出来
    5)供应商网络出口出现问题
    6)服务器负载过大

    注意:DNS(域名解析系统)
    将域名转为IP地址的协议,也可以将IP地址转为域名

  • 相关阅读:
    PRelu和一些激活函数
    一个编程入门参考网站
    GPT/Bert/Attention等一些总结
    [Go] struct
    [Typescript Challenges] 15. Medium Get return type of function
    [GO] Pass by reference
    [Go] Error
    [Go] Defer, panic, recover
    [Go] Method
    [Go] Pointer
  • 原文地址:https://www.cnblogs.com/bashliuhe/p/16395898.html
Copyright © 2020-2023  润新知