当前位置: 首页 > news >正文

计算机网络八股文--day4 --传输层TCP与UDP

这是面试中最常考到的一层:端到端(也就是进程之间)的透明数据传输服务,差错控制和流量控制
该层呈上启下,像上面的资源子网提高服务,并使用下面通信子网的服务

端口,用于唯一标识主机上进程的,只有本地意义,通常与IP配合形成socket(套接字)
这里举出一些常用端口号(熟知端口号)
    FTP:文件传输协议 21
    TELNET:远程登录协议 23
    SMTP:邮件协议 25
    DNS:域名解析协议 53
    TFTP:简单文件传输协议 69
    HTTP:超文本传输协议 80

主要协议只有两个,TCP和UDP
UDP较为简单:通常考的是TCP和UDP的区别
这里先简要介绍一下UDP

1. UDP:无连接,不可靠,开销小,实时好:数据传输可靠性由应用层负责
    8B首部:包含源端口,目的端口,UDP长度,16位校验和(二进制反码求和),每个16位
    由于头部简单,故没有什么偏移量的东西,所以UDP传输的数据不可拆分。
    如果在接收端发现UDP出现差错,直接丢弃就可以了
    那这里就就需要讲解以下UDP校验和的机制了
        首先会给UDP报文段添加一个伪首部
        这个内部包括源IP,目的IP,一字节0,自己使用的端口17,以及UDP长度
        然后进行二进制反码求和再取反,(三部分一起,包括伪首部,首部,数据部分)
        数据部分不足,补0,如果校验和结果为0,那么用全1填充,不想使用校验和,该段为全0
    


然后就是传输层的难点,TCP了
2. TCP:面向连接服务,面型字节流,开销大,可靠,可以保证按序的交付
    头部为20B(固定长度)(最大可为60字节(可变部分最大为40字节)):
        源端口,目的端口
        序号:当前报文的序号
        确认号:期待下次发送的报文
        数据偏移:以4字节为单位,标识首部长度,就是数据相对于起始位置的长度
        URG:紧急位,当URG等于1时表示紧急指针有效
        ACK:表示确认号有效
        PSH:表示接收方立即将数据传递给上层应用
        RST:当RST=1时,表示TCP连接出现严重差错,需要重新建立连接
        SYN:同步位
        FIN:终止位
        窗口:指明自己的接收窗口大小,以字节为单位
        校验和:这个和UDP用法一致,这里不再做介绍
        紧急指针:同URG配合使用,指向紧急数据

然后就是TCP最常考的问题
TCP三次握手和四次挥手:具体流程用图片展示,这里为解释
    1.三次握手
        最初服务器和客户端都处于关闭状态,随后服务器开启,监听连接请求
        客户端主动开启,向服务器发送连接请求,发送后状态为同步已发送(syn-sent)
        服务器接收到连接请求,发送响应,状态转为同步已收到(syn-rcvd)
        客户端收到响应,进行回复,状态转为连接建立
        服务器收到响应,状态转为连接建立
        
    2.四次挥手
        首先客户端主动关闭(双方均可)发送挥手请求,状态转为终止等待1(fin-wait1)
        服务器收到请求,发送响应,转为关闭等待(close-wait),此时服务器仍然可以向客户端发送没有发完的数据
        客户端收到回复,进入终止等待2
        服务器发完数据,进入最后确认(last-ack)
        客户端收到服务器最后发完的数据,进行回复确认,随后进入时间等待(time-wait)
        服务器收到回复确认,关闭
        客户端等待2MSL(最大报文段寿命)后进行关闭

为什么要等待2MSL呢

防止旧连接报文干扰新连接​​:2MSL的等待确保网络中残留的旧连接报文(如延迟的FIN或数据包)彻底消失,避免被误认为属于新建立的同名连接。

 

相关文章:

  • k8s 探针
  • TFT(薄膜晶体管)和LCD(液晶显示器)区别
  • Socket 编程 UDP
  • 基于LangChain 实现 Advanced RAG-后检索优化(下)-上下文压缩与过滤
  • 基于Springboot高校网上缴费综合务系统【附源码】
  • SpringSecurity配置(权限认证)
  • redis延时队列详细介绍
  • 计算机基础:二进制基础17,八进制减法
  • 第 13 届蓝桥杯 C++ 青少组省赛中 / 高级组 2022 年真题(编程第一题)
  • 360驱动大师v2.0(含网卡版)驱动工具软件下载及安装教程
  • 【AI面试准备】银行UI测试效率提升案例解析
  • LeetCode算法题 (设计链表)Day16!!!C/C++
  • [Vue]props解耦传参
  • Python刷题:流程控制(下)
  • 基于开源AI大模型与AI智能名片S2B2C商城小程序的线上活动执行优化研究
  • Java开发经验——ali编码规范经验总结
  • 【Mytais系列】Type模块:源码
  • centos7.0无法安装php8.2/8.3
  • 【大模型面试每日一题】Day 7:为什么大模型训练选择 Adam 而非 SGD?Adam 的关键改进是什么?
  • 使用PageHelper实现分页查询(详细)
  • 一季度全国30强城市出炉:谁能更进一步?谁掉队了?
  • 科技日报刊文批院士专家“赶场式”跑会:助长浮躁之气功利之心
  • 跳水世界杯女子单人10米台决赛,陈芋汐、全红婵包揽金银牌
  • 见证历史与未来共舞:上海西岸“蝶变共生”对话讲坛圆满举行
  • 韩国经济副总理崔相穆宣布辞职
  • 对谈|《对工作说不》,究竟是要对什么说不?