• 网络编程基础知识


    1、TCP建立的三次握手,为什么不是两次或者四次?
    握手过程:C向S发送一个Seq=X序列将SYN置为1,S收到后返回一个ACK=X+1,Seq=Y,将SYN置为1,C收到后返回ACK=Y+1,Seq =Z这样就建立了连接
    如果两次:已经失效的连接请求报文段,C发出的第一个连接请求在连接释放后才到达,此时S会认为是一个新的请求,于是S向C发送确认报文,而C并不理会S的确认报文,S就会一直等待C的数据,占有资源,而三次握手可以避免这种情况发生;

    2、TCP的四次挥手?
    TCP是全双工通信模式,主机1发出FIN报文说明主机1没有数据要发送了,但这时,主机2还是可以接收主机1的报文的,当主机2返回一个ACK报文时,表示主机1没有数据要发送了,但主机2还可以给主机1发送数据,当主机2也发送FIN报文时,通知主机1告知主机2没有数据要发送了,主机1就向主机2发送一个ACK,这时TCP就会断开连接。

    3、TCP和UDP有什么区别?

    UDP(User Datagram Protocol) TCP(Transmission Control Protocol)
    1)TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
    2)TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
    3)TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
    UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
    4)每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
    5)TCP首部开销20字节;UDP的首部开销小,只有8个字节
    6)TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

    4、什么是TCP的粘包?

    粘包和拆包都是TCP在传输数据包的过程中可能发生的现象,客户端发送多个不同数据包时,服务器端当做一个数据包接收,也就是粘包,也成为数据的无边界性

  • 相关阅读:
    _purecall函数
    RaiseFailFastException函数
    windows系统的快速失败机制---fastfail
    悲伤的 C++ throw(…)
    STATUS_STACK_BUFFER_OVERRUN不一定是栈缓冲区溢出
    Windows是如何将64位Ntdll映射到32位进程的---转自简书
    学会springboot多环境配置方案不用5分钟
    优雅的使用springboot集成任务调度
    springboot-使用OpenAPI之后我再也没有写过接口文档
    我是如何做到springboot自动配置原理解析
  • 原文地址:https://www.cnblogs.com/xqn2017/p/8029439.html
Copyright © 2020-2023  润新知