1. 换技术的本质,就是让数据切换路径;因为,网络中的数据是以分组或封包(Packet)的形式传输,因此这个技术也称作封包交换技术(Packet Switch)

传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次

TCP(Transport Control Protocol)是一个传输层协议,提供 Host-To-Host 数据的可靠传输,支持全双工,是一个连接导向的协议。
TCP 协议有这样几个基本操作:
如果一个 Host 主动向另一个 Host 发起连接,称为 SYN(Synchronization),请求同步;
如果一个 Host 主动断开请求,称为 FIN(Finish),请求完成;
如果一个 Host 给另一个 Host 发送数据,称为 PSH(Push),数据推送。

TCP 是一个双工协议,为了让双方都保证,建立连接的时候,连接双方都需要向对方发送 SYC(同步请求)和 ACK(响应)。
握手阶段双方都没有烦琐的工作,因此一方向另一方发起同步(SYN)之后,另一方可以将自己的 ACK 和 SYN 打包作为一条消息回复,因此是 3 次握手——需要 3 次数据传输。
到了挥手阶段,双方都可能有未完成的工作。收到挥手请求的一方,必须马上响应(ACK),表示接收到了挥手请求。类比现实世界中,你收到一个 Offer,出于礼貌你先回复考虑一下,然后思考一段时间再回复 HR 最后的结果。最后等所有工作结束,再发送请求中断连接(FIN),因此是 4 次挥手。

TCP 的拆包和粘包

拆包是将数据拆分成多个 TCP 段传输
粘包是将多个数据合并成一个 TCP 段发送
TCP 为什么不一次发送完所有的数据?
这里有很多原因,比如为了稳定性,一次发送的数据越多,出错的概率越大
再比如说为了效率,网络中有时候存在着并行的路径,拆分数据包就能更好地利用这些并行的路径
再有,比如发送和接收数据的时候,都存在着缓冲区,缓冲区是在内存中开辟的一块区域,目的是缓冲。因为大量的应用频繁地通过网卡收发数据,这个时候,网卡只能一个一个处理应用的请求。当网卡忙不过来的时候,数据就需要排队,也就是将数据放入缓冲区。如果每个应用都随意发送很大的数据,可能导致其他应用实时性遭到破坏
TCP 协议是如何恢复数据的顺序的,TCP 拆包和粘包的作用是什么?>>>>TCP 拆包的作用是将任务拆分处理,降低整体任务出错的概率,以及减小底层网络处理的压力。拆包过程需要保证数据经过网络的传输,又能恢复到原始的顺序,粘包是为了防止数据量过小,导致大量的传输,而将多个 TCP 段合并成一个发送

滑动窗口和流速控制是怎么回事

滑动窗口是 TCP 协议控制可靠性的核心。发送方将数据拆包,变成多个分组。然后将数据放入一个拥有滑动窗口的数组,依次发出,仍然遵循先入先出(FIFO)的顺序,但是窗口中的分组会一次性发送。窗口中序号最小的分组如果收到 ACK,窗口就会发生滑动;如果最小序号的分组长时间没有收到 ACK,就会触发整个窗口的数据重新发送。
另一方面,在多次传输中,网络的平均延迟往往是相对固定的,这样 TCP 协议可以通过双方协商窗口大小控制流速,这里说的分组和 TCP 段是一个意思。

UDP 协议

UDP(User Datagram Protocol),目标是在传输层提供直接发送报文(Datagram)的能力。Datagram 是数据传输的最小单位

UDP 与 TCP的区别

  1. 目的差异
    首先,这两个协议的目的不同:TCP 协议的核心目标是提供可靠的网络传输,而 UDP 的目标是在提供报文交换能力基础上尽可能地简化协议轻装上阵
  2. 可靠性差异
    TCP 核心是要在保证可靠性提供更好的服务。TCP 会有握手的过程,需要建立连接,保证双方同时在线。而且TCP 有时间窗口持续收集无序的数据,直到这一批数据都可以合理地排序组成连续的结果
    UDP 并不具备以上这些特性,它只管发送数据封包,而且 UDP 不需要 ACK,这意味着消息发送出去成功与否 UDP 是不管的。
  3. 连接 vs 无连接
    TCP 是一个面向连接的协议(Connection-oriented Protocol),传输数据必须先建立连接。 UDP 是一个无连接协议(Connection-less Protocol),数据随时都可以发送,只提供发送封包(Datagram)的能力
  4. 流控技术(Flow Control)
    TCP 使用了流控技术来确保发送方不会因为一次发送过多的数据包而使接收方不堪重负。TCP 在发送缓冲区中存储数据,并在接收缓冲区中接收数据。当应用程序准备就绪时,它将从接收缓冲区读取数据。如果接收缓冲区已满,接收方将无法处理更多数据,并将其丢弃。UDP 没有提供类似的能力
  5. 传输速度
    UDP 协议简化,封包小,没有连接、可靠性检查等,因此单纯从传输速度上讲,UDP 更快
  6. 场景差异
    TCP 每个数据封包都需要确认,因此天然不适应高速数据传输场景,比如观看视频(流媒体应用)、网络游戏(TCP 有延迟)等。具体来说,如果网络游戏用 TCP,每个封包都需要确认,可能会造成一定的延迟;再比如音、视频传输天生就允许一定的丢包率;Ping 和 DNSLookup,这类型的操作只需要一次简单的请求/返回,不需要建立连接,用 UDP 就足够了。

TCP 协议和 UDP 协议的优势和劣势

》》》》
TCP 最核心的价值就是提供封装好的一套解决可靠性的优秀方案
TCP 确保吞吐量、延迟、丢包率的基础上,保证可靠性

延迟指的是 1 bit 的数据从网络的一个终端传送到另一个终端需要的时间
吞吐量指单位时间内可以传输的平均数据量
丢表率指发送出去的封包没有到达目的地的比例

路由和寻址的区别是什么

》》》》
寻址(Addressing)就是通过地址找设备。和现实生活中的寻址是一样的,比如根据地址找到一个公寓。在 IPv4 协议中,寻址找到的是一个设备所在的位置
路由(Routing)本质是路径的选择。就好像知道地址,但是到了每个十字路口,还需要选择具体的路径。

Tunnel 技术是什么

》》》
Tunnel 就是隧道,这和现实中的隧道是很相似的。隧道不是只有一辆车通过,而是每天都有大量的车辆来来往往。两个网络,用隧道连接,位于两个网络中的设备通信,都可以使用这个隧道。隧道是两个网络间用程序定义的一种通道。具体来说,如果两个 IPv6 网络被 IPv4 分隔开,那么两个 IPv6 网络的出口处(和 IPv4 网络的网关处)就可以用程序(或硬件)实现一个隧道,方便两个网络中设备的通信

NAT 是如何工作的

》》》
网络地址解析协议(NAT)解决的是内外网通信的问题。NAT 通常发生在内网和外网衔接的路由器中,由路由器中的 NAT 模块提供网络地址转换能力。从设计上看,NAT 最核心的能力,就是能够将内网中某个 IP 地址映射到外网 IP,然后再把数据发送给外网的服务器。当服务器返回数据的时候,NAT 又能够准确地判断外网服务器的数据返回给哪个内网 IP

下面这几个地址 127.0.0.1, localhost, 0.0.0.0 有什么不同

》》》
127.0.0.1是本地回环地址(loopback),发送到 loopback 的数据会被转发到本地应用。

localhost 指代的是本地计算机,用于访问绑定在 loopback 上的服务。localhost 是一个主机名,不仅仅可以指向 IPv4 的本地回环地址,也可以指向 IPv6 的本地回环地址 [::1]。

0.0.0.0是一个特殊目的 IP 地址,称作不可路由 IP 地址,它的用途会被特殊规定。通常情况下,当我们把一个服务绑定到0.0.0.0,相当于把服务绑定到任意的 IP 地址。比如一台服务器上有多个网卡,不同网卡连接不同的网络,如果服务绑定到 0.0.0.0 就可以保证服务在多个 IP 地址上都可以用。

Socket 首先是文件,存储的是数据。对服务端而言,分成服务端 Socket 文件和客户端 Socket 文件。服务端 Socket 文件存储的是客户端 Socket 文件描述符;客户端 Socket 文件存储的是传输的数据。读取客户端 Socket 文件,就是读取客户端发送来的数据;写入客户端文件,就是向客户端发送数据。对一个客户端而言, Socket 文件存储的是发送给服务端(或接收的)数据。综上,Socket 首先是文件,在文件的基础上,又封装了一段程序,这段程序提供了 API 负责最终的数据传输。

Socket 编程:epoll 为什么用红黑树

》》》
在 Linux 的设计中有三种典型的 I/O 多路复用模型 select、poll、epoll。

select 是一个主动模型,需要线程自己通过一个集合存放所有的 Socket,然后发生 I/O 变化的时候遍历。在 select 模型下,操作系统不知道哪个线程应该响应哪个事件,而是由线程自己去操作系统看有没有发生网络 I/O 事件,然后再遍历自己管理的所有 Socket,看看这些 Socket 有没有发生变化
poll 提供了更优质的编程接口,但是本质和 select 模型相同。因此千级并发以下的 I/O,你可以考虑 select 和 poll,但是如果出现更大的并发量,就需要用 epoll 模型
epoll 模型在操作系统内核中提供了一个中间数据结构,这个中间数据结构会提供事件监听注册,以及快速判断消息关联到哪个线程的能力(红黑树实现)。因此在高并发 I/O 下,可以考虑 epoll 模型,它的速度更快,开销更小。

计算机网络基础知识1相关推荐

  1. 计算机网络中网络拓扑,计算机网络基础知识:不同的网络拓扑结构对网络的影响...

    导语:中公小编今天带大家了解计算机网络拓扑结构的相关知识,并认识不同的网络拓扑结构对网络影响有哪些.通过思考题与解答的形式,希望考生可以开拓思维,一起思考.加强对计算机网络基础知识的认识与记忆. 思考 ...

  2. 最容易理解的计算机网络 基础知识概论(下)

    文章目录 1.计算机网络的分类 1.1按照传输介质分类 1.2按照网络的使用者进行分类 1.3按照网络的规模和作用范围进行分类. 2.计算机网络的性能指标 2.1 带宽 2.2 时延 2.2.1网络时 ...

  3. 简述计算机通信网络的技术指标,计算机网络基础知识之数据通信中的主要技术指标...

    $2.1.2 数据通信中的主要技术指标 数据通信的任务是传输数据信息,希望达到传输速度快.出错率低.信息量大.可靠性高,并且既经济又便于使用维护.这些要求可以用下列技术指标加以描述. 1.数据传输速率 ...

  4. 计算机网络基础知识 帮助学习网络管理的初学者快速了解网络管理的初步结构知识...

    网络分层: OSI七层协议:物理层.数据链路层.网络层.运输层.会话层.表示层.应用层 五层协议:物理层.数据链路层.网络层.运输层.应用层 HTTP四层协议:网络接口层.网际层.运输层.应用层 层 ...

  5. 网络通信学习笔记之——计算机网络基础知识

    一.计算机网络基础知识 1.什么是计算机网络 ​ 把分布在不同地理位置的计算机与专门的网络设备用通信线路互相连成一个规模大.功能强的系统, 从而使众多计算机可以方便地互相传递信息.共享软件.硬件.数据 ...

  6. @计算机网络基础知识

    1.计算机网络基础知识 1.OSI参考模型7个层次每个层级完成不同功能,相邻层次通过接口完后数据上下传递,相同的层次遵循相同的协议来交换协议数据单元. 2.网络基础概念 解决问题:不同机器,不同程序间 ...

  7. 计算机网络基础心得体会结尾,学习《计算机网络基础知识》心得体会

    学习<计算机网络基础知识>心得体会 ... 如今已经是信息时代,作为主流信息工具的网络越来越重 要,网络是信息的载体,是人们传递感情的工具.随着信息社会 的不断发展,网络的应用将会更加广泛 ...

  8. 计算机网络基础知识及面试总结-这应该是最全的了

    文章目录 计算机网络基础知识及面试总结 1 基本概念 1.1 TCP/IP协议栈,OSI参考模型 1.2 简要的介绍各层的作用 1.3 常见的协议 2 应用层 2.1 HTTP请求有哪些常见状态码? ...

  9. 计算机网络基础知识--TCP/IP协议、IP分组、TCP传输

    转 计算机网络基础知识--TCP/IP协议.IP分组.TCP传输 2017年12月08日 08:35:09 孔维昊 阅读数 1820 查看全文 http://www.taodudu.cc/news/s ...

  10. 学完计算机网络基础及应用的感想,学习《计算机网络基础知识》心得体会

    学习<计算机网络基础知识>心得体会 至于其他的比如网络安全的知识,的确很有用,但不是我兴趣所在,有杀毒软件就够了. 通过学习计算机网络这门课程,使我更加对网络刮目相看了! . 学习< ...

最新文章

  1. HDU 1257 - 最少拦截系统 ( LIS / 贪心 )
  2. 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文
  3. [Linux]阿里云免费试用体验(在阿里云的ubuntu上部署个人服务)
  4. JavaScript变量和作用域
  5. Linux !的使用
  6. Ext GrdPanel多种取值方式
  7. BZOJ 1491: [NOI2007]社交网络( floyd )
  8. 个人作业5——软件工程总结
  9. gmail注册手机号不能用于验证_一个手机号码、辅助邮箱,可以注册绑定多少个gmail帐号?...
  10. 用计算机弹传说之下鱼姐的bgm,传说之下战斗曲曲谱_传说之下打托丽尔的bgm
  11. P2207 Photo
  12. 学习 jQuery -2 document 对象的 ready 事件
  13. java线程volatile_多线程与高并发(四)volatile关键字
  14. 图像的灰度化、二值化
  15. C51单片机数码管显示数字实现
  16. 关于格林尼治时间(GMT)和DateTime相互转换的分享
  17. 【前端库】moment.js 时间库
  18. PMP-计算题汇总(PV、EV、AC、BAC、EAC、ETC、)
  19. 随机数种子(seed)
  20. 阿里云云盾证书是什么?云盾证书有什么作用?

热门文章

  1. 1-智能QOS方案介绍
  2. 计算错误可以用计算机ac,计算器AC是什么键?
  3. form表单提交既有文字也有图片的情况下,增加enctype属性
  4. PHP 7.1 新特性
  5. 1.删除链表的奇数节点 2.删除链表的偶数节点
  6. C# 获得本机IP、端口等信息地址以及服务器IP信息
  7. python英文版怎么改成中文版_Python中文(非英文字符)解决方法
  8. JavaScript异步与同步解析
  9. ASP.NET(C#)对接国际验证码接口DEMO示例
  10. 计算机二级试题word,计算机二级考试word试题及答案.doc