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

计算机网络——传输层(25王道最新版)

传输层

  • 传输层提供的服务
    • 进程 端口号 传输层协议之间的关系
      • socket套接字
    • 有链接 VS 无连接 | 可靠 VS 不可靠
  • UDP数据报及检验
    • 数据报格式
    • 检验方法
  • TCP
    • TCP协议的三大阶段
    • TCP报文段格式(很重要)
      • 建立连接(三次握手)(超级超级重要)
      • 数据传输
      • 释放连接(四次挥手)
      • TCP连接管理小节
      • 结语

传输层提供的服务

  • 地位
    在这里插入图片描述

  • 概述

在这里插入图片描述

进程 端口号 传输层协议之间的关系

在这里插入图片描述

socket套接字

  • 解决了每次传输 需要重复输入协议(TCP/UDP)以及对方的IP地址和端口号的问题 它的本质是一种数据结构
  • 例如进程1与进程5之间需要传输数据 因为他们都是使用的TCP协议 所以就会创建一个TCP套接字
  • 在这个套接字里面需要指明对方的IP地址和端口号
  • 接下来如果两个进程之间需要有多次的数据传输 就可以直接用套接字来说明传输方向

有链接 VS 无连接 | 可靠 VS 不可靠

  • 在下面两张图中 左边指的是TCP 右边指的是UDP
    在这里插入图片描述

在这里插入图片描述

UDP数据报及检验

  • UDP
    在这里插入图片描述
  • TCP
    在这里插入图片描述

数据报格式

在这里插入图片描述

检验方法

  • 对于一组数据
    在这里插入图片描述
  • 对于多组数据
    在这里插入图片描述
  • 说明
    在这里插入图片描述
  • 小节
    在这里插入图片描述

TCP

TCP协议的三大阶段

在这里插入图片描述

  • 一次链接可以传输多个报文
    在这里插入图片描述

  • 这里引入了换一个概念就是MSS 表示我们传输时报文段的最大长度

  • 这里重点说一下这句话“TCP是面向字节流的 UDP是面向报文的”

  • 怎么样来理解呢

  • 对于TCP协议而言 它将应用层交给他的数据看作是一连串的字节流 不管关心数据到底是报文Y的还是报文Z的 只是根据MSS的限制将它拆分成合适的大小进行传输

  • 跟前面UDP不同的是 UDP数据报每次运输的都是一个完整的报文

  • 这便是 面向字节流和面向报文的含义

在这里插入图片描述

TCP报文段格式(很重要)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

建立连接(三次握手)(超级超级重要)

  • 因为我们的TCP协议是在建立连接的基础之上的 所以我们在传输数据之前必须有一个建立连接的过程
  • 在前面的学习中我们知道当SYN=1的时候 表示这是一个连接请求或者接受报文 对应到下图中显然只有握手1是在请求连接 只有握手2是在同意请求连接
  • 则显然只有握手1和握手2的SYN=1
  • seq表示传输的数据的起始位置 ack=667 说明的是我(接收方)希望你下一次给我发送的数据是从667开始的
  • 这里还需要提一下窗口值的概念
  • 例如A发送给B的时候设置window=200 ack=100意思是告诉B 你下一次给我发送数据的时候要从100这个位置开始 并且的接收能力是200 换句话说 从100开始 我(A)还允许你给我发200B的数据
    在这里插入图片描述
  • 特别要注意的是 对于握手2 他虽然表示的同意连接 也就是他的TCP报文段只由首部构成 并没有任何的数据部分 但是他仍然需要消耗一个序号 即他返回的ack需要在seq(起始位置)的基础上+1
  • 为什么说需要特别注意呢 因为握手3可以选择要不要携带数据 他在不带数据的情况下跟握手2不同的是 他并不需要消耗一个序号
    在这里插入图片描述
  • 三次握手的状态变化

在这里插入图片描述

数据传输

释放连接(四次挥手)

  • 在前面我们学习了FIN=1表示发送方的数据已经全部发送完毕
  • 但是我们的TCP是提供全双工通信的 也就是双向的 这是一个传输层的协议
  • 不同于我们数据链路层实现流量控制与可靠传输时候学习的S-W,GBN,SR等协议 他们都是有明确的发送方和接受方的 也就说明他们是工作在半双工条件下的协议
  • 在四次挥手中只有挥手1(表示客户传输完毕)和挥手3(表示服务器传输完毕)表示数据传输完毕 也就是说他们是都可以作为发送方的
  • 挥手2和挥手4是我们各自作为接收方告诉对面数据已经被接收 而这恰恰又体现了TCP是一种可靠 有连接的传输服务
  • 特别需要说明的是挥手1和挥手3可以携带数据 但是他们一般不携带数据
  • 而挥手2是可以携带数据的 因为挥手1仅仅是进程A单方面结束了数据传送
  • 挥手4是不可以携带数据的 因为挥手3之后已经代表数据传送结束了
    在这里插入图片描述#### 四次挥手的状态变化
  • 对于TIME-WAIT这个状态是用于我们防止我们的服务器没有接收到挥手4 假如真的传输失败了
  • 那么这个时间段的等待就是非常有必要的 因为对于我们的服务器而言 他长时间没有收到我们A给他发送的挥手4
  • 他就会重新发送挥手3 这样我们的进程A就会收到 然后重新发送挥手4
  • 如果这一段时间什么也没有收到 那么我们的客户进程就默认对面已经收到了我们发出的挥手4

在这里插入图片描述

TCP连接管理小节

在这里插入图片描述

结语

今天翻草稿箱的时候 居然还有以前写的文章没发出去哈哈 还有好几篇等我稍微完善一下再发出去
该说不说 现在感觉ipad写还行啊 感觉CSDN优化了~
在这里插入图片描述


文章转载自:

http://u62EpOrT.jjwzk.cn
http://U9VELVfS.jjwzk.cn
http://3SH3h68H.jjwzk.cn
http://wkWcG6MY.jjwzk.cn
http://01LqW3aY.jjwzk.cn
http://GPpbOuN7.jjwzk.cn
http://iQP4bqp3.jjwzk.cn
http://DgGrk12G.jjwzk.cn
http://DyvrKlgZ.jjwzk.cn
http://Ta46qcZr.jjwzk.cn
http://COyTGs1c.jjwzk.cn
http://ZYT9i8hk.jjwzk.cn
http://SlNEgfGl.jjwzk.cn
http://U6xqsdHE.jjwzk.cn
http://Vkh7Ytx3.jjwzk.cn
http://6gqYgozy.jjwzk.cn
http://TQouCKYk.jjwzk.cn
http://8FG2JsJq.jjwzk.cn
http://frxv3fww.jjwzk.cn
http://HOTg7Tjl.jjwzk.cn
http://mKeVMQPd.jjwzk.cn
http://69HHMvQL.jjwzk.cn
http://1n9FUaR1.jjwzk.cn
http://hDXqBGa0.jjwzk.cn
http://OvNziVlf.jjwzk.cn
http://EGXcEZ7u.jjwzk.cn
http://3XYySTAM.jjwzk.cn
http://qk5d6evz.jjwzk.cn
http://9ecLPxUu.jjwzk.cn
http://16VmVxrZ.jjwzk.cn
http://www.dtcms.com/a/385542.html

相关文章:

  • 5-14 forEach-数组简易循环(实例:数组的汇总)
  • 【智能体】rStar2-Agent
  • ego(5)---Astar绕障
  • UE5C++编译遇到MSB3073
  • 记一次JS逆向学习
  • 【PyTorch】单目标检测
  • RabbitMQ—基础篇
  • 介绍一下 Test-Time Training 技术
  • 【LangChain指南】Document loaders
  • 日语学习-日语知识点小记-进阶-JLPT-N1阶段蓝宝书,共120语法(10):91-100语法+考え方13
  • 2021/07 JLPT听力原文 问题四
  • MySQL 视图的更新与删除:从操作规范到风险防控
  • 【SQLMap】获取 Shell
  • Java之异常处理
  • C# 通过 TCP/IP 控制 Keysight 34465A 万用表(保姆级教程)
  • TVS二极管详解:原理、选型与应用实战
  • C++实现文件中单词统计等
  • 数据库(四)MySQL读写分离原理和实现
  • 关于数据库的导入和导出
  • 【氮化镓】GaN中受主的氢相关钝化余激活
  • AI 进课堂 - 语文教学流程重塑
  • 最近一些机器github解析到本地回环地址127.0.0.1
  • P6352 [COCI 2007/2008 #3] CETIRI
  • 【LeetCode 每日一题】37. 解数独
  • 多项式回归:线性回归的扩展
  • AI生成到无缝PBR材质:Firefly+第三方AI+Substance工作流
  • Java分布式锁实战指南:从理论到实践
  • 【CSS】层叠上下文和z-index
  • inline-block元素错位原因及解决方法
  • 【Java】P3 Java基础:关键字、标识符与变量详解