• Linux网络编程基础


    TCP/IP

    简述一下TCP建立连接和断开连接的过程。

    在这里插入图片描述

    三次握手:

    • 内核体现

    在这里插入图片描述

    • 用户空间就是函数的执行

    三次握手

    1. Client(客户端)将标志位SYN置为1,随机产生一个数据包seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
    2. Server收到数据包后由标志位ACK=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个数据包seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
    3. Client收到确认后,检查ack是否为J1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

    数据传输:
    在这里插入图片描述

    • 建立连接以后就是互相传输数据,ACK=上个数据包+1,再随机产生数据包互相传输

    四次挥手:

    内核空间:
    在这里插入图片描述

    TCP保证可靠性?

    1. 序列号、确认应答、超时重传
      数据到达接收方,接收方需要发出一个确认应答,表示已经收到该数据段,并且确认序号会说明了它下一次需要接收的数据序列号。如果发送发迟迟未收到确认应答,那么可能是发送的数据丢失,也可能是确认应答丢失,这时发送方在等待一定时间后会进行重传。这个时间一般是2*RTT(报文段往返时间)+一个偏差值。
    2. 窗口控制与高速重发控制/快速重传(重复确认应答)
      使用窗口控制,如果数据段1001-2000丢失,后面数据每次传输,确认应答都会不停地发送序号为1001的应答,表示我要接收1001开始的数据,发送端如果收到3次相同应答,就会立刻进行重发;但还有种情况有可能是数据都收到了,但是有的应答丢失了,这种情况不会进行重发,因为发送端知道,如果是数据段丢失,接收端不会放过它的,会疯狂向它提醒…

    TCP的三次握手和四次挥手的原因是什么?

    为什么是三次握手?

    1. 为了防止已失效的连接请求报文段突然有送到了B,因而产生错误
    2. 假设两次握手时,A发出的第一个请求连接报文段在某一网络节点长时间滞留,以致延误到连接释放后才到达B。B收到失效的连接请求报文段后,认为是A又发出一次新的连接请求。于是向A发送确认报文段,同意建立连接,此时在假定两次握手的前提下,连接建立成功。这样会导致B的资源白白浪费
    3. 假设两次握手时,A发出一个请求报文段,但发送过后A就因为问题而导致下线。之后B收到了A发来的请求连接报文段,给A发送确认报文段,同意建立连接,此时在假定两次握手的前提下,连接建立成功。这样会导致B的资源白白浪费

    为什么是四次挥手?

    1. TCP协议是全双工通信,这意味着客户端和服务器端都可以向彼此发送数据,所以关闭连接是双方都需要确认的共同行为
    2. 假设是三次挥手时,首先释放了A到B方向的连接,此时TCP连接处于半关闭(Half-Close)状态,这时A不能向B发送数据,而B还是可以向A发送数据。如果此时A收到了B的确认报文段后,就立即发送一个确认报文段,这会导致B向A还在发送数据时连接就被关闭。这样会导致A没有完整收到B所发的报文段
  • 相关阅读:
    [面试直通版]操作系统之锁、同步与通信(上)
    计算机视觉与深度学习-卷积神经网络-卷积&图像去噪&边缘提取-卷积与边缘提取-[北邮鲁鹏]
    Vue框架实现对前端数据表的增删改查(第六课)
    抖音短视频实操:抖音热门视频的分类特点,如何选择视频内容(中)
    驱动开发:内核枚举Minifilter微过滤驱动
    【Java】有 A、B、C 三个线程,如何保证三个线程同时执行?在并发情况下,如何保证三个线程依次执行?如何保证三个线程有序交错执行?
    初识 My Batis一 什么是My Batis,JDBC缺点,My Batis简化,Mapper 代理开发,My Batis 核心配置文件
    Scratch游戏------打砖块(不用VIP)
    AbstractBeanDefinition解读
    报时机器人的rasa shell执行流程分析
  • 原文地址:https://blog.csdn.net/liqifff/article/details/126884762