计算机网络学习

时间:2024-03-15 17:53:55

五层协议

  • 网络协议是为进行网络中的数据交换而建立的规则
  • 五层协议的体系结构由应用层、运输层、网络层、数据链路层和物理层组成。运输层最重要的协议是TCP和UDP协议,而网络层最重要的协议是IP协议
    计算机网络学习

计算机网络学习

物理层

在物理层上所传数据的单位是比特。发送方发送1时,接收方应当收到1而不是0。因此物理层要考虑用多大的电压代表“1”或“0”,以及接收方如何识别出发送方所发送的比特。物理层还要确定连接电缆的插头应当有多少根引脚以及各引脚应如何连接。当然,解释比特代表的意思,就不是物理层的任务。请注意,传递信息所利用的一些物理媒体,如双绞线、同轴电缆、光缆、无线信道等,并不在物理层协议之内而是在物理层协议的下面。因此也有人把物理层下面的物理媒体当做第0层。

运输层

计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机到主机的通信。但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。

  • 如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议。
  • 运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就好像是在两个运输层实体之间有一条端到端的逻辑通信信道
  • 根据应用需求的不同,因特网的运输层为应用层提供了两种不同的运输协议,即面向连接的TCP无连接的UDP

端口号

TCP/IP体系的运输层使用端口号来区分应用层的不同应用进程。

  • 端口号使用16比特表示,取值范围0~65535
    • 熟知端口号:0~1023,IANA把这些端口号指派给了TCP/IP体系中最重要的一些应用协议,例如:FTP使用21/20,HTTP使用80,DNS使用53
    • 登记端口号:1024~49151,为没有熟知端口号的应用程序使用。使用这类端口号必须在IANA按照规定的手续登记,以防止重复。例如:Microsoft RDP微软远程桌面使用的端口号是3389。
    • 短暂端口号:49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号,通信结束后,这个端口号可供其他客户进程以后使用。

TCP和UDP的对比

用户数据报协议UDP 传输控制协议TCP
无连接 面向连接
支持一对一,一对多,多对一和多对多交互通信 每一条TCP连接只能有两个端点EP,只能是一对一通信
对应用层交付的报文直接打包 面向字节流
尽最大努力交付,也就是不可靠;不使用流量控制和拥塞控制 可靠传输,使用流量控制和拥塞控制
首部开销小,仅8字节 首部最小20字节,最大60字节

TCP报文段的首部格式

  • 为了实现可靠传输,TCP采用了面向字节流的方式。
  • 但TCP在发送数据时,是从发送缓存取出一部分或全部字节并给其添加一个首部使之成为TCP报文段后进行发送。
    • 一个TCP报文段由首部和数据载荷两部分构成;
    • TCP的全部功能都体现在它首部各字段的作用。

计算机网络学习

TCP的流量控制

一般来说,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。
所谓流量控制,就是让发送方的发送速率不要太快,要让接收方来得及接收。
利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。

  • TCP接收方利用自己的接收窗口的大小来限制发送方发送窗口的大小。
  • TCP发送方收到接收方的零窗口通知后,应启动持续计时器。持续计时器超时后,向接收方发送零窗口探测报文。

TCP的拥塞控制

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况就叫做拥塞。

  • 在计算机网络中的链路容量(即带宽)、交互结点中的缓存和处理机等,都是网络的资源。
  • 若出现拥塞而不进行控制,整个网络的吞吐量将随着输入负荷的增大而下降

有四种算法

计算机网络学习

TCP可靠传输的实现

TCP基于以字节为单位的滑动窗口来实现可靠传输

  • 发送方在未收到接收方的确认时,可将发送窗口内还未发送的数据全部发送出去;
  • 接收方只接收序号落入发送窗口内的数据;

TCP的连接建立

TCP的连接建立要解决以下三个问题:

  1. 使TCP双方能够确知对方的存在;
  2. 使TCP双方能够协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等);
  3. 使TCP双方能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配。

TCP使用“三报文握手”建立连接

计算机网络学习

其中会存在一个问题就是两次握手可不可以,三次握手是不是多余?

不多余!这是为了防止已失效的连接请求报文段突然又传送到了TCP服务器,因而导致错误。

TCP的连接释放-四次挥手

计算机网络学习

应用层

应用层是计算机体系结构的最顶层。经典的网络应用有

  • 万维网WWW
  • 域名系统DNS
  • 动态主机配置协议DHCP
  • 电子邮件
  • 文件传送协议FTP
  • P2P文件共享
  • 多媒体网络应用

C/S(客户、服务器)方式和P2P(对等)方式

  1. C/S方式
  • 客户和服务器是指通信中涉及的两个应用进程。
  1. P2P(Peer-to-Peer)方式
  • 在P2P方式中,没有固定的服务请求者和服务提供者,分布在网络边缘各段系统中的应用进程是对等的,被称为对等方。对等方相互之间直接通信,每个对等方即是服务的请求者,又是服务的提供者。
  • 目前,在因特网上流行的P2P应用主要包括P2P文件共享、即时通信、P2P流媒体、分布式存储等。

动态主机配置协议DHCP

DHCP(Dynamic Host COnfiguration Protocol)提供了一种机制,称为即插即用连网。这种机制允许一台计算机加入新网络时可自动获取IP地址等网络配置信息而不用手动参与。

域名系统DNS

DNS(Domain Name System)将域名转换为便于机器处理的IP地址

  • DNS报文使用运输层的UDP协议进行封装

因特网是否可以只使用一台DNS服务器?

这种做法并不可取。因为因特网的规模很大,这样的域名服务器肯定会因为超负荷而无法正常工作,而且一旦域名服务器出现故障,整个因特网就会瘫痪。
DNS使大多数域名都在本地解析,仅少量解析需要在因特网上通信,因此系统效率很高。

  • 由于DNS是分布式系统,即使单个计算机出了故障,也不会妨碍整个系统的正常运行。

QUIC

QUIC(quick udp internet connection)是由Google提出的使用udp进行多路并发传输的协议

为什么需要QUIC

与TCP相比,QUIC可以减少延迟
QUIC与现有TCP+TLS+HTTP/2方案相比,有以下几点主要特征:

  1. 利用缓存,显著减少连接建立时间
  2. 改善拥塞控制,拥塞控制从内核空间到用户控件
  3. 没有head of line阻塞的多余复用
  4. 前向纠错,减少重传;
  5. 连接平滑迁移,网络状态的变更不会影响连接断线。

大规模切换QUIC面临的问题

  1. 小地方,路由封杀UDP 443端口(这正是QUIC部署的端口)
  2. UDP包过多,由于QS(quality service)限定,会被服务商误认为是攻击,UDP包被丢弃;
  3. 无论是路由器还是防火墙目前对QUIC都还没有做好准备

问题

什么是epoll机制?

IO复用技术就是协调多个可释放资源的FD(也可以说是网络IO)交替共享任务处理线程完成通信任务,实现多个fd对应1个任务处理线程。epoll解决了select面临的可协调数量不超过1024的问题

相关链接