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

计算机网络-第5章 运输层(1)

主要内容:进程之间的通信与端口、UDP协议、TCP协议、可靠传输原理(停止等待协议、ARQ协议)、TCP报文首部、TCP三大题:滑动窗口、流量控制、拥塞控制机制

5.1 运输层协议概述

运输层向它上面的应用层提供通信服务,真正通信的实体为主机中的进程,端点非主机而是进程。端到端的通信为应用进程之间的通信。

运输层提供应用进程间的逻辑通信,网络层提供主机间的逻辑通信。

运输层的两种协议:无连接的用户数据报协议UDP、面向连接的传输控制协议TCP;

通信时传送的数据单位叫做运输协议数据单元TPDU;

采用UDP和TCP的各种应用及应用层协议:

单个计算机的进程用进程标识符标志。互联网使用的计算机操作系统种类很多,使用不同标识符,该方法不能用于标志运行在应用层的应用进程。通过在运输层使用端口协议号(简称端口),用于识别进程。

协议层间的抽象协议端口是软件端口,为应用层各种协议进程与运输实体进行层间交互的一种地址,硬件端口是不同硬件设备进行交互的接口。16位端口号用来标志一个端口。

服务器使用的端口号分为熟知端口号、登记端口号(登记后才能用)。

客户端口号为短暂端口号。

名词解释:

运输层的复用和分用:复用为不同进程使用同一运输层协议传送数据,分用为接收方基于端口把数据正确交付目的进程。

5.2 用户数据报协议UDP

UDP在IP数据报上增加了很少一点功能,复用、分用、差错检测等。

主要特点:1无连接(减少了开销和发送数据前的时延);2尽最大努力交付;3面向报文(对应用层交下来的报文,不合并也不拆分,保留这些报文的边界);4UDP没有拥塞控制;5支持一对一,一对多,多对一,多对多交互通信;6UDP首部开销小只有8个字节,TCP20个字节。

UDP首部格式:

UDP基于端口的分用:

通过伪首部计算检验和,IP数据报只检验首部,UDP检验首部和数据部分。

5.3 传输控制协议TCP

TCP主要特点:1.面向连接的运输层协议;2.每条TCP连接只有两个端点,只能点对点通信;3.提供可靠交付;4.提供全双工通信(通过缓存实现)。5.面向字节流,流指的是流入到进程或进程流出的字节序列。把数据看作一连串的无结构的字节流,而非数据块。

TCP根据对方给出的窗口值和当前网络拥塞程度决定报文段应包含多少个字节。如果缓存的数据太长,划分短一些再传送。如果只有一个字节,积累足够多后再构成报文段发送出去。

TCP连接的端点叫做套接字(socket)或插口;端口号拼接到IP地址构成套接字。

每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。

应用程序访问连网协议的应用编程接口API,也称为socket,socket api。面向网络的api,restful api是基于http的api。

5.4 可靠传输工作原理

理想传输条件特点:1.传输信道不产生差错;2不管发送方以多快速度发数据,接收方总来得及处理。

“停止等待”:每发送完一个分组就停止发送,等阿迪对方确认。收到确认后再发送下一个分组。

有差错情况会在发送完一个分组后设定一个超时计时器,重传前面发送过的分组,为超时重传。

超时重传三点注意事项:1暂时保留已发送的分组副本;2分组和确认分组都必须进行编号;3.重传时间比数据在分组传输的平均往返时间更长一些。

确认丢失和确认迟到:

通过确认和重传机制,就可以在不可靠的传输网络上实现可靠通信。自动重传请求ARQ.

信道利用率:

采用流水线传输可获得很高的信道利用率。

连续ARQ协议:发送窗口(发送窗口内的5个分组都可以连续发出去,无需确认),接收方累计确认,对按序到达的最后一个分组发送确认。

5.5 TCP报文段首部格式

TCP面向字节流,传送的数据单元为报文段,该报文段分为首部和数据两部分。

相关文章:

  • 【字典合集】SecLists-更全面的渗透测试字典 v2024.1
  • 软件设计模式:模板方法模式
  • [论文笔记]DouZero: Mastering DouDizhu with Self-Play Deep Reinforcement Learning
  • 【Linux的网络编程】
  • Linux删除Mysql
  • MinGW-w64的下载与安装
  • 03:HAL---中断
  • 性能优化-卡牌项目渲染优化
  • QML | 在QML中导入JavaScript资源、导入JavaScript资源、包含一个JavaScript 资源
  • 机器学习之分类回归模型(决策数、随机森林)
  • 如何使用宝塔面板搭建Discuz并结合cpolar实现远程访问本地论坛
  • Qt: 事件过滤器的更多用法
  • Echarts 报提示 There is a chart instance already initialized on the dom.
  • docker的快速入门教程
  • excel 动态列导出
  • @jsonView过滤属性
  • 【5+】跨webview多页面 触发事件(二)
  • canvas绘制圆角头像
  • flutter的key在widget list的作用以及必要性
  • Github访问慢解决办法
  • golang中接口赋值与方法集
  • happypack两次报错的问题
  • input的行数自动增减
  • java8-模拟hadoop
  • JS+CSS实现数字滚动
  • magento2项目上线注意事项
  • Python学习笔记 字符串拼接
  • Vue 重置组件到初始状态
  • 半理解系列--Promise的进化史
  • 从输入URL到页面加载发生了什么
  • 给第三方使用接口的 URL 签名实现
  • 两列自适应布局方案整理
  • 突破自己的技术思维
  • 一些关于Rust在2019年的思考
  • 优秀架构师必须掌握的架构思维
  • 智能合约开发环境搭建及Hello World合约
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • %check_box% in rails :coditions={:has_many , :through}
  • (LeetCode) T14. Longest Common Prefix
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (小白学Java)Java简介和基本配置
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) 物件導向與老子思想 (OO)
  • (转) 深度模型优化性能 调参
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Framework 服务实现监控可观测性最佳实践
  • .net MVC中使用angularJs刷新页面数据列表
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net接口调试与案例
  • .NET开发者必备的11款免费工具
  • .NET设计模式(8):适配器模式(Adapter Pattern)