目录

  • UDP

    • 首部结构
    • 主要特点
  • TCP
    • 首部结构
    • 主要特点
  • TCP 可靠性实现
    • 停止等待ARQ协议
    • 连续ARQ协议&滑动窗口协议
    • 拥塞控制
  • TCP 运输连接管理
    • 连接建立:三次握手
    • 连接释放:四次挥手
  • 结语

本文主要目的虽然是为了计网考试而准备的,但是之后会继续更新修改,而且UDP/TCP对我们游戏程序员算是计算机网络基础知识最重要的一块,
所以很有必要记录一下笔记。

UDP

首部结构

主要特点

  • UDP 是无连接的运输层协议(即发送数据之前不需要建立连接)。
  • UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。
  • UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。
  • UDP 支持一对一、一对多、多对一和多对多的交互通信。
  • UDP 的首部开销小,只有 8 个字节。

TCP

首部结构

主要特点

  • TCP 是面向连接的运输层协议(即发送数据之前需要建立连接)。
  • TCP 提供可靠交付的服务。
  • TCP 面向字节流。
  • TCP 提供全双工通信。每一条 TCP 连接只能是点对点的(一对一)。
  • TCP 的首部开销相对大点,有 20 个字节。

TCP 可靠性实现

停止等待ARQ协议

主要内容就是发送方发一分组数据包给接收方,并等待接收方的确认,收到确认包后,继续按顺序发送下一分组数据包给接收方...以此保证发送数据包的顺序。

但是发送数据包可能遇到如下两种出错情况:

  • A传送的过程中分组丢失了。
  • A传送的过程中出现差错,B在接收M1时检测出了差错,于是丢弃包。

以上这些出错情况,B都不会发送任何信息来通知A。
而是让A设置一个超时计时器,只要超过了一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,所以A会重传刚刚的发送过的分组,也就是所谓的超时重传。

连续ARQ协议&滑动窗口协议

上面简单使用停止等待ARQ协议的话,信道利用率会非常的低。

连续ARQ协议是指发送方采用流水线传输分组:
发送方可以连续发送多个分组,不必每发完一个分组就停下来等待对方确认。这样可以极大增大信道利用率。

滑动窗口协议是指发送方需要维持一个发送窗口,通常是结合来连续ARQ协议使用的:
位于发送窗口内的所有分组都可以连续发送出去,而不需要等待对方的确认, 发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

例如下图,当发送方收到第一个分组的确认,就把发送窗口向前移动一个分组的位置。如果原来已经发送了前5个分组,则现在可以发送窗口内的第6个分组。

接收方一般都是采用累积确认的方式:
也就是说接收方不必对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认。如果发送方收到了这个分组确认信息,则表示到这个分组为止的所有分组都已经正确接收到了。

但累计确认的缺点是不能正确的向发送方反映出接收方已经正确收到的所以分组的信息。
例如发送方发送了前5个分组,而中间的第3个分组丢失了。这时候接收方只能对前2个发出确认,而不知道后面3个分组的下落,因此只能把后面的3个分组都重传一次。

拥塞控制

当主机开始发送数据时,因为还不清楚网络负荷的情况,如果立即把大量的数据字节注入网络,那么就有可能引起网络拥塞。

慢开始算法:由小到大的逐渐增大发送窗口,也就是说从小到大增大拥塞窗口数值。

在慢开始时,将这个拥塞设置为最大报文段MSS的数值,每收到一个对新的报文段的确认后,拥塞窗口的值就加1。如下图所示:

这里我们首先将拥塞窗口cwnd置为1,发送完一个报文段M1,而且收到接收方发来的确认时,将cwnd增大到2,然后发送M2,M3,再次接收到确认后,将cwnd增加到4。因此,每经过一个传输轮次,拥塞窗口就加倍。

拥塞避免算法:让cwnd缓慢得增大,即每经过一个RTT往返时间就把发送方的拥塞窗口cwnd加1,而不是加倍。这样,拥塞窗口cwnd按线性规律缓慢增长,比慢开始增长速率慢的多。

为了防止拥塞窗口增长过大引起网络阻塞,拥塞控制机制还设置了一个慢开始门限 ssthresh

  • 当cwnd < ssthresh时,使用上述的慢开始算法
  • 当cwnd > ssthresh时,停止使用慢开始算法而改用拥塞避免算法
  • 当cwnd = ssthresh时,既可以使用慢开始算法,也可使用拥塞避免算法。

无论在哪个阶段,只要发送方判断网络中出现拥塞(没有按时收到确认),就要把慢开始门限ssthresh置为出现拥塞时发送窗口的一半,然后将cwnd置1,重新执行慢开始算法。

这样做就可以使发生拥塞的路由器把缓存中积压的分组处理完毕

举个例子,如图

1、在开始的时候将拥塞窗口置为1,慢开始门限的初始值ssthresh设置为16。
2、在执行慢开始算法时,拥塞窗口cwnd随着传输轮次按指数增长,超过慢开始门限值时(cwnd=16),开始执行拥塞避免算法,拥塞窗口按照线性规律增长。
3、假设拥塞窗口增长到24时,网路出现超时,很可能拥塞,所以慢开始门限值变为原来的一半(12),拥塞窗口置为1,并执行慢开始算法,当拥塞窗口再次达到门限值时,改为拥塞避免算法。

TCP 运输连接管理

TCP运输连接有三个阶段:连接建立,数据传送,连接释放。
TCP在连接建立过程中要解决三个问题:

  • 双方都知道另一方的存在。
  • 允许双方协商一些参数(最大窗口值、时间戳选项、服务质量等)。
  • 能够对运输实体资源(缓存大小,连接表中的项目)进行分配。

连接建立:三次握手

以下是建立连接的三次握手过程(以A主动连接为例):

  1. A向B发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。
  2. B收到连接请求报文段后,如同意,则发回确认。B在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号 ack = x + 1,自己选择的序号 seq = y。
  3. A收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1。然后A的TCP通知上层应用进程,连接已经建立。
  4. B收到A的确认后,也通知其上层应用进程:TCP连接已经建立。

连接释放:四次挥手

通信的双方都可主动释放连接。

以下是释放连接的四次挥手过程(以A主动释放为例):

  1. A先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭TCP连接。A把连接释放报文段首部的 FIN = 1,其序号 seq = u,等待B的确认。
  2. B发出确认,确认号 ack = u+1,而这个报文段自己的序号 seq = v。从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态。(但B若发送数据,A仍要接收。)
  3. 若B已经没有要向A发送的数据,则也类似1步骤主动释放连接,发送连接释放包。
  4. A收到连接释放报文段后,必须发出确认。在确认报文段中 ACK = 1,确认号 ack= w+ 1,自己的序号 seq = u + 1。TCP 连接必须经过时间 2MSL 后才真正释放掉。

结语

这里就顺便提一些关于我所知道有关网络多人游戏的经验:

  • 网络多人游戏一般采用UDP协议,因为TCP协议额外占用带宽太大,不符合多人游戏对网络的带宽需求。
  • 网络多人游戏在UDP协议之上通过封装更高一层也可以获得可靠性,而且还能进一步分可靠性等级或者优先度等级:从而使重要的数据包优先发送/接受或者保证不会丢失,而让相对不重要的包则排最后处理和不提供防丢失保证。
  • 待更

转载于:https://www.cnblogs.com/KillerAery/p/10895633.html

计算机网络基础笔记 运输层协议UDP/TCP相关推荐

  1. TCP/IP协议族之运输层协议 ( UDP, TCP)

    UDP  User Datagram Protocol    用户数据报协议 TCP  Transmission Control Protocol    传输控制协议 UDP:向应用层提供无连接的.不 ...

  2. 具体的运输层协议---UDP和TCP

    具体的运输层协议---UDP和TCP 概述 TCP协议 TCP协议概述 TCP协议的可靠数据传输(可靠性) 三次握手与四次挥手(TCP连接的创建与断开) TCP的流量控制和拥塞控制 TCP的流量控制 ...

  3. 计算机网络-运输层(UDP/TCP协议)

    文章目录 前言 一.计算机网络 二.运输层 1.复用和分用 2.UDP 3.TCP Ⅰ- TCP的灵魂拷问 - TCP 和 UDP 的区别 Ⅱ - TCP的灵魂拷问 - 三次握手 Ⅲ - TCP的灵魂 ...

  4. 计算机网络基础:OSI模型与TCP/IP协议的关系

    数据来源 一.分层模型 1)分层思想(把复杂的事情简单化) 通信需要 --> 定义协议标准 完成每一件事,需要的协议太多,怎么办 ?分层,分工合作 将复杂的流程分解为几个功能相当单一的子流程 - ...

  5. 计算机网络复习笔记 之协议相关

    最近要准备QE了,但是总感觉这些协议的一些条条框框还是没有搞清楚,写个笔记整理一下. 电脑刚输入wifi的密码,电脑从路由器获取IP地址 应用 将网址信息转化为IP地址 应用层协议 DHCP(Dyna ...

  6. 计算机网络基础|笔记

    计算机网络 目录 计算机网络 网络基础 网络时代分类 交换方式 性能指标 计算及专业名称 网络协议三要素 各层定义 各类国际组织 企业网络架构 物理层 传输介质 冲突域和广播域 宽带分配方式 协议 以 ...

  7. 计算机网络基础之运输层

    运输层 概述 运输层向它上面的应用层提高通信服务 当网络的边缘部分中的两个主机使用网络的核型部分的功能进行端到端的通信时,只有主机的协议栈才有运输层,而网络和兴部分中的路由器在转发分组时都只用到下三层 ...

  8. 网络基础之网络协议,OSI,TCP/IP介绍

    文章目录 1 概述 1.1 网络协议 1.2 OSI模型 1.2.1 应用层 1.2.2 表示层 1.2.3 会话层 1.2.4 传输层 1.2.5 网络层 1.2.6 数据链路层 1.2.7 物理层 ...

  9. 计算机网络基础知识--应用层协议HTTP、FTP、SMTP

    目录 1. HTTP 协议 HTTP 特点 HTTP 与HTTPS 的区别 HTTP 请求报文 HTTP 响应报文 2. FTP 协议 与TFTP 协议 FTP 协议 TFTP 协议 3. SMTP ...

最新文章

  1. python进程和线程_Python进程与线程知识
  2. C#读取SHAPEFILE文件总结0--大纲
  3. Python运算符及注释
  4. 简单有效!在CV/NLP/DL领域中,有哪些修改一行代码或者几行代码提升性能的算法?...
  5. 人工神经网络_用人工神经网络控制猴子大脑,MIT科学家做到了
  6. des算法密码多长_密码学中的多个DES
  7. 在腾讯云开通短信验证服务设置正确格式的签名和正文模板并完成群发消息测试
  8. html消息发送接收,在html页面中 如何应用mqtt协议发送/接收消息
  9. word批量替换交叉引用格式
  10. 单片机c语言 教案,《单片机C语言》 课程教案.doc
  11. ubuntu安装maya2011的方法
  12. 武警部队公安应急人防安监三维可视化交互电子沙盘方案书
  13. 1114 计算营业额
  14. 端游服务器文件转成手游,苦等三年,当年画面最好的端游终于要做成手游了!...
  15. 如何应对数千微服务组件带来的挑战?
  16. Thoth-Tech靶机实验实战演练
  17. Excel玩转统计图
  18. 蓝桥杯嵌入式开发经验分享(1.嵌入式学习准备)
  19. 建表报错 primary key and distributed by definition incompatible
  20. SAP 框架协议(outline agreements)

热门文章

  1. TortoiseSVN 不显示图标
  2. 4.Flow Layout Pane
  3. Webpack实战(一):基础入门-教你轻松搞定Webpack打包工具安装及参数配置
  4. C++ 公有继承、保护继承和私有继承中类成员的访问权限的控制
  5. 双向循环链表中结点的交换(C++)
  6. php 响应时间,PHP下解决ajax请求服务器响应时间过长问题
  7. 关于es6中常见的一些方法----对象篇
  8. QT-helloworld-Qt设计师编写
  9. 李婷华 201771010113 《面向对象程序设计(java)》 第二周学习总结
  10. WDA 程序文本翻译OTR