【王道·计算机网络】第五章 传输层【未完】

news2024/11/17 1:42:29

在这里插入图片描述

一、传输层概述

  • 传输层为应用层提供通信服务,使用网络层服务
  • 传输层的功能:
    1. 提供进程和进程之间的逻辑通信(网络层提供主机之间的逻辑通信)
    2. 复用(发送发不同的应用进程)和分用(接收方正确的数据传送)
    3. 对收到的报文进行差错检测
    4. 两个协议:面向连接的传输控制协议TCP、无连接的用户数据协议UDP
  • TCP协议的特点:可靠、面向连接、时延大,适用于大文件
    1. 传送数据之前必须建立连接,数据传送结束后要释放连接
    2. 不提供广播/多播服务
    3. 增加开销:确认、流量控制、计时器及连接管理等
  • UDP协议的特点:不可靠、无连接、时延小,适用于小文件
    1. 传送数据之前无需连接,收到UDP报文后不需给出任何确认

1.1 传输层的寻址与端口

  • 复用:应用层所有的应用进程都可以通过传输层再传输到网络层
  • 分用:传输层从网络层收到数据后交付指明的应用进程
  • 端口(逻辑/软件端口)是传输层的SAP,标识主机中的应用进程
    1. 端口号只有本地意义,在因特网中不同计算机的相同端口没有联系
    2. 端口号的长度为16bit,能标识65536个不同的端口号
      在这里插入图片描述
  • 套接字Socket = (主机IP地址,端口号):在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程

二、UDP协议

  • UDP只在IP数据服务之上增加了:复用分用、差错检测
  • UDP的主要特点:
    1. UDP是无连接的,减少开销和发送数据之前的时延
    2. UDP使用最大努力交付,即不保证可靠交付
    3. UDP是面向报文的,适合一次性传输少量数据的网络应用
    4. UDP无拥塞控制,适合很多实时应用。
    5. UDP首部开销小8B,TCP20B
      在这里插入图片描述
  • UDP首部格式
    在这里插入图片描述
  • UDP校验
    在这里插入图片描述

三、 TCP协议

  • TCP协议的特点
    1. 面向连接(虚连接)的传输协议
    2. 每一条TCP只能有两个端点,即点对点的单播通信
    3. 提供可靠交付的服务,无差错、不丢失、不重复、按序到达;可靠有序、不丢不重
    4. 提供全双工通信:发送缓存、接收缓存
    5. 面向字节流:应用程序交下来的数据看成一连串无结构的字节流
  • TCP报文段首部格式
    在这里插入图片描述

3.1 TCP连接

  • TCP连接传输三个阶段:连接建立、 数据传送、连接释放

3.3.1 连接建立

  • TCP连接建立采用客户(主动发起连接建立的应用进程)服务器(被动等待连接建立的应用程序)方式
  • SYN洪泛攻击:
    1. SYN洪泛攻击发生在OSI第四层,这种方式利用TCP协议的特性,即三次握手
    2. 攻击者发送TCP SYN(SYN是TCP三次握手中的第一个数据包);当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态(即,半连接状态);服务器收不到再确认的话,还会重复发送ACK给攻击者。
    3. 攻击者对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了
    4. SYN洪泛攻击的解决:SYN cookie
  • TCP连接的建立与释放
    在这里插入图片描述

3.2 可靠传输

  • 可靠:保证接收方进程从缓存区读出的字节流与发送方发送的字节流完全一致
  • TCP实现可靠传输的机制
    1. 校验:增加伪首部,使用二进制反码求和
    2. 序号:一个字节占一个序号,序号字段是一个报文段第一个字节的序号
    3. 确认:TCP默认使用累计确认(TCP只确认这个数据流中第一个丢失字节为止的报文段)
    4. 重传:TCP发送方在规定时间内没有收到确认就要重传已发送的报文段(超时重传)
  • 重传时间:TCP采用自适应算法,动态改变重传时间RTTs(加权平均往返时间 )
  • 冗余ACK(冗余确认):快速重传
    1. 每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号
    2. 发送方收到3个对于报文段n的冗余ACK → 认为n+1报文段丢失,重传该报文段

3.3 流量控制

3.4 拥塞控制

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/546899.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Primer C++(第三章)

补码、原码和反码 正数的原码、反码、补码都相同 负数的补码:1、正数的原码符号位由0变1 (负数的原码) 2、对负数的原码除符号位外每位取反 (负数的反码) 3、对负数的反码末尾1 (负数的补码) …

众位力量汇集《永恒之塔私服》新版龙战前传

盛大游戏《永恒之塔》从万众翘首企盼中登陆国服到现在,已经过去了一年有余。在前不久前更新的周年庆版本“云上的召唤”中,精灵星的宝宝终于可以和精灵星一起翱翔在天际了…… “云上的召唤”我们还没有体验够,全新版本“龙战前传”已然于7月…

【观察】从业界首款“空间穿越屏”,看华为全屋智能的进化与重构

这个时代,“家”的构成不再是简单的一家三口,客厅、厨房、卧室也不再只是承担某个单一功能或场景的空间。 无数身在异乡打拼的青年,开始向往一个专属的独立空间;那些奔波劳碌的中年夫妻,在为家人创造更好生活环境的同时…

RabbitMQ_面试题01

文章目录 1.RabbitMQ如何防止消息堆积2.RabbitMQ如何保证消息顺序消费3.RabbitMQ如何防止消息重复消费4.RabbitMQ如何保证消息可靠性4.1 消息持久化4.2 生产者确认2.2.1 application.yml2.2.2 Config2.2.3 Test 4.3 消费者确认4.3.1 application.yml4.3.2 Test 1.RabbitMQ如何防…

OPT (奥普特)锂电池视觉检测技术精彩亮相CIBF

5月16~18日,第十五届中国国际电池技术展览会在深圳举办,全球2500多家优秀电池企业参展。 OPT(奥普特)作为锂电行业机器视觉核心供应商,携3D、深度学习、分频技术等视觉检测技术亮相,并展示了上…

chatgpt赋能Python-python3免费吗

Python3免费吗? Python3到底免费还是收费呢?这是一个被许多人关注和疑惑的问题。本文将从不同方面解答这个问题,希望能给你提供一个清晰的认识。 什么是Python3? Python3是一种通用、高级、解释型的编程语言。它是由Guido van …

【Linux初阶】fork进程创建 进程终止 进程等待

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【Linux初阶】 ✒️✒️本篇内容:fork进程创建,理解fork返回值和常规用法,进程终止(退出码、退出场景、退出…

第08章_聚合函数

第08章_聚合函数 我们上一章讲到了 SQL 单行函数。实际上 SQL 函数还有一类,叫做聚合(或聚集、分组)函数,它是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。 1. 聚合函数介绍 什么是…

【sentinel】Sentinel工作主流程以流控规则源码分析

Sentinel工作主流程 在Sentinel里面,所有的资源都对应一个资源名称(resourceName),每次资源调用都会创建一个Entry对象。Entry可以通过对主流框架的适配自动创建,也可以通过注解的方式或调用SphU API显式创建。Entry创…

跨境seo引流的13种方法

跨境SEO引流是一种通过搜索引擎优化来吸引国际目标受众并增加网站流量的策略。以下是一些跨境SEO引流的关键步骤和技巧: 目标受众研究:了解你的目标市场和受众群体。了解他们的需求、喜好、购买习惯以及使用的搜索引擎和关键词。这将帮助你确定你的跨境S…

chatgpt赋能Python-python3怎么合并列表

Python3:合并列表的不同方法 如果你正在使用Python 3,那么你很可能会面对合并列表的问题。合并列表(也称为连接列表或串联列表)是将两个或多个列表组合成一个列表的过程,这是在编程中很常见的任务。在这篇文章里&…

Python并发编程:异步编程和多线程技术的应用和效率优化

第一章:介绍 在当今的软件开发领域,高效的并发编程对于处理大规模数据和提升系统性能至关重要。Python作为一种简洁、易读且功能强大的编程语言,提供了多种并发编程的技术和工具。本文将深入探讨Python中的异步编程和多线程技术,…

chatgpt赋能Python-python3如何画图

Python3如何画图? Python是一种高级编程语言,它有着多种用途,包括数据分析和可视化。Python3是Python的最新版本,它具有更好的性能和易用性。在这篇文章中,我们将介绍如何使用Python3来画图,并探讨其优势和…

KingbaseES 逻辑读与物理读

oracle数据库中逻辑读,物理读 数据访问方式:数据库少不了和操作系统进行数据交互,表数据最好的方式是从数据库共享池中访问到,避免发生磁盘IO,当然如果共享池中没有访问到数据就难免发生磁盘IO。 物理读:从…

第三篇、Arduino uno、nano、2560用oled0.96寸屏幕显示dht11温湿度传感器的温度和湿度信息——结果导向

0、结果 说明:先来看看拍摄的显示结果,如果是你想要的,可以接着往下看。 1、外观 说明:本次使用的oled是0.96寸的,别的规格的屏幕不一定适用本教程,一般而言有显示白色、蓝色和蓝黄一起显示的&#xff0…

【小沐学Web】Node实现Web图表功能(ECharts.js,React)

🎈🎈🎈Python实现Web图表功能系列:🎈🎈🎈1🎈【Web开发】Python实现Web图表功能(D-Tale入门)🎈2🎈【Web开发】Python实现Web图表功能&a…

Fragment 要你何用?2.0版本

前言 在之前的文章里有分析过Activity、Fragment、View之间的关联,也简单分析了Fragment的原理。 本篇将对Fragment被高频使用的场景以及一些坑点作分析,通过本篇文章,你将了解到: 老生常谈:为什么需要Fragment?Frag…

Java 创建一个大文件

有时候,我们在对文件进行测试的时候,可能需要创建一个临时的大文件。 那么问题来了,在 Java 中如何创建大文件呢? 问题和解决 有些人想到的办法就是定义一个随机的字符串,然后重复很多次,然后将这个字符…

第一篇:强化学习基本原理通俗介绍

你好,我是zhenguo(郭震) 今天强化学习第一篇:白话介绍强化学习的基本原理 强化学习是一种机器学习方法,旨在让智能体(agent)通过与环境的交互学习如何做出最优的行动选择以获得最大的累积奖励。…

Rust每日一练(Leetday0004) 正则表达、盛水容器、转罗马数字

目录 10. 正则表达式匹配 Regular Expression Matching 🌟🌟🌟 11. 盛最多水的容器 Container with most water 🌟🌟 12. 整数转罗马数字 Integer to Roman 🌟🌟 🌟 每日一练…