计算机网络,看这篇就够了

因特网

因特网是世界范围的计算机网络,即它互联了全球数十亿计算设备(叫主机或者端系统)的网络。下图可作为因特网全貌结构。

在这里插入图片描述

端系统通过通信链路与分组交换机连接到一起。当端系统要向另一台端系统发数据时,会将数据分段,并为每段数据加上首部字节,而这种分段的数据术语称为分组。

  • 通信链路:常见的有铜线、光纤等,不同的物理媒体组成其传输的速度自然不同。
  • 分组交换机:有2种最著名的类型,路由器与链路层交换机。

端系统通过ISP(Internet Service Provider)接入网络。
端系统与分组交换机都要运行一系列的网络协议,这些协议控制数据在网络上的传输,因特网的主要协议统称为TCP/IP协议。

分组交换机

分组交换

  • 分组:从源端系统向目的端系统发送一个报文,源将长报文划分为较小的数据块,称之为分组;
  • 分组交换:在源和目的端系统之间,每个分组都通过通信链路和分组交换机,由分组交换机实现分组交换功能,转发分组至指定的通信链路;

例:如果某源端系统或分组交换机经过一条链路发送一个L比特的分组,链路的传输速率为R比特/秒,则传输该分组的时间为L/R秒。

存储转发传输

存储转发传输是指在交换机能够开始向输出链路传输该分组的第一个比特之前,必须接受到整个分组;
例:两个端系统经一条路由器构成的简单网络:
源在时刻0开始传输,在时刻L/R秒,该路由器刚好接收到整个分组,并且朝着目的地向出链路开始传输分组(这里暂时先只考虑传输时延);
在时刻2L/R,路由器已经传输了整个分组,并且整个分组已经被目的地接收;
考虑一种情形:如果一旦比特到达,交换机就转发比特,而不等到其全部到达再转发,那么传输时延将会是多少呢?
虽然有两条通信链路,但由于此处我们只考虑传输时延而不考虑传播时延和处理时延,也就意味着这段时间和距离以及通信链路的段数没有关系,那么依然可以直接得到答案:L/R秒;
考虑一般情形:通过由N条速率均为R的链路组成的路径,此时在源于目的地之间有N-1台路由器,此时从源发送一个分组,端到端的时延为:d=N*L/R。

在这里插入图片描述

时延

分组从一台主机(源)出发,通过一系列路由器传输,在另一台主机(目的地)中结束它的历程。当分组从一个结点(主机或路由器)沿着这条路径到后继结点(主机或路由器),该分组在沿途的每个结点经受了几种不同类型的时延。这些时延最为重要的是结点处理时延(nodal processing delay)、排队时延(queuing delay)、传输时延(transmission delay)和传播时延(propagation delay),这些时延总体累加起来是结点总时延(total nodal delay)。
其中RTT(Round-Trip Time)往返时延在计算机网络中它是一个重要的性能指标,表示从发送端发送数据开始,到发送方收到来自接收方的确认(接收端收到数据后便立即发送确认),总共经历的时延。
下面将以一张图来解释这些时延类型:
在这里插入图片描述

(1)处理时延
检查分组首部和决定将该分组导向何处所需要的时间是处理时延的一部分。处理时延也能包括其他因素,如检查比特级别的差错所需要的时间,该差错出现在从上游结点向路由器A传输这些分组比特的过程中。高速路由器的处理时延通常是微秒或更低的数量级。在这种结点处理之后,路由器将该分组引向通往路由器B链路之前的队列。
(2)排队时延
在队列中,当分组在链路上等待传输时,它经受排队时延。一个特定分组的排队时延长度将取决于先期到达的正在排队等待向链路传输的分组数量。如果该队列是空的,并且当前没有其他分组正在传输,则该分组的排队时延为0。另一方面,如果流量很大,并且许多其他分组也在等待传输,该排队时延将很长。我们将很快看到,到达分组期待发现的分组数量是到达该队列的流量的强度和性质的函数。实际的排队时延可以是毫秒到微秒量级。
(3)传输时延
假定分组以先到先服务方式传输,这在分组交换网中是常见的方式,仅当所有已经到达的分组被传输后,才能传输刚到达的分组。用L比特表示该分组的长度,用R bps(即b/s)表示从路由器A到路由器B的链路传输速率。例如,对于一条10Mbps的以太网链路,速率R=10Mbps;对于100Mbps的以太网链路,速率R=100Mbps。传输时延是L/R。这是将所有分组的比特推(传输)向链路所需要的时间。实际的传输时延通常在毫秒到微秒量级。
(4)传播时延
一旦一个比特被推向链路,该比特需要向路由器B传播。从该链路的起点到路由器B传播所需要的时间是传播时延。该比特以该链路的传播速率传播。该传播速率取决于该链路的物理媒体(即光纤、双绞铜线等),其速率范围是2×108~3×108m/s,这等于或略小于光速。该传播时延等于两台路由器之间的距离除以传播速率。即传播时延是d/s,其中d是路由器A和路由器B之间的距离,s是该链路的传播速率。一旦该分组的最后一个比特传播到结点B,该比特及前面的所有比特被存储于路由器B。整个过程将随着路由器B执行转发而持续下去。在广域网中,传播时延为毫秒量级。

排队时延和分组丢失

结点时延的最为复杂和有趣的成分是排队时延,所以详说一下。
每台分组交换机有多条链路与之相连,对于每条相连的链路,该分组交换机具有一个输出缓存(也称输出队列),用于存储路由器准备发往那条链路的分组。
如果到达输出缓存的分组需要传输到某条链路,但却发现那条链路正忙于传输其它链路(传输容量已满),该到达分组必须在输出缓存中排队等待,这段等待时间被称为排队时延。
又由于输出缓存的大小也是有限的,当一个分组到达其输出缓存时,如果该输出缓存已经被其它需要传输的分组完全充满了,那么此时就会出现丢包现象,到达的分组或者排队的分组之一会被丢弃。

例:如下图,假设A与B通过100Mbps以太网向E发送分组,当分组到达第一个路由器时,会将这些分组导向一个15Mbps的链路。在某个短时间间隔内,如果分组到达路由器的到达率(转换为每秒比特)超过的15Mbps,这些分组在通过链路传输之前将在输出缓存中排队,在第一个路由器中将会出现拥塞。
在这里插入图片描述

转发表和路由选择协议

  • IP地址:在因特网中,每台端系统具有一个IP地址,用于唯一标识自己的身份,目的IP地址存在于源发送的分组首部,且该地址具有等级结构,想象一下按照邮政地址发送的方式,二者极其相似;
  • 转发表:每台路由器都拥有一个转发表,用于将目的地址(或其一部分)映射成为输出链路;

这样一来,整个过程就一目了然了,当某分组到达一台路由器时,路由器检查该地址,并用这个目的地址搜索器转发表,并且将其转发给适当的通信链路;

  • 路由选择协议:因特网中用于自动设置这些转发表的协议标准。

套接字

多数应用程序是由通信进程对组成的,每对进程向对方互发报文,这个过程是通过一个叫套接字(socket)的软件接口来实现发送与接收报文的,因此套接字也称为API(Application Programming Interface)。如果广泛地讲,就是客户端服务端就是通过自己的套接字进行通信,所以在创建客户端跟服务端时,首先是先创建套接字,而套接字会绑定端系统的一个端口,这样的话外部向端口传输数据时就是向绑定的套接字进行传输。

TCP的通信过程会有点特殊,服务端的套接字是分为2种的:欢迎套接字跟连接套接字。当三次握手未完成时,客户端是跟服务端的欢迎套接字进行通信的,也就是服务端的对外端口绑定的是欢迎套接字,三次握手成功后,服务端会新生成一个连接套接字,专门做后续的通信。

很明显在运输层是有一个功能是指引数据通向哪个套接字的功能,叫多路分解,而客户端封装数据通过套接字发送则叫多路复用。

协议栈

因特网的协议栈分为5层:

  • 应用层:是网络应用程序与应用层协议存留的地方,协议一般包括HTTP(web请求)、SMTP(电子邮件)、 FTP(文件传输)、DNS(域名系统)。这一层的分组叫做报文。
  • 运输层:负责封装拆解来传输报文,协议为TCP与UDP。这一层的分组叫做报文段。
  • 网络层:运输层会传递报文段和目标地址给它。这一层的分组为数据报。
  • 链路层:这一层的分组为帧。
  • 物理层:这一层的分组会被转化成比特字节,通过电信号把数据传输下去。

分组在每一层的时候,都会被封装该层的首部数据,一般来说分组是由2部分组成:首部字段与有效载荷字段。
在这里插入图片描述

应用层

HTTP

HyperText Transfer Protocol, 中文称超文本传输协议,它是Web 核心,由客户端与服务端实现,通过交换HTTP报文进行会话。因为HTTP服务器不保存关于客户的任何信息,所以HTTP也叫无状态协议。
HTTP使用TCP作为它的运输层协议(此文不包含HTTP3.0),客户端首先发起一个与服务器的TCP连接,一旦连接成功就可以通过套接字接口访问TCP。
为了提高效率,HTTP默认是持续连接模式,就是在一定时间内相同客户端与服务端共用一个TCP连接。

报文段结构
请求报文
  • 请求行:方法(GET/POST)+url+版本号(HTTP/(0.9/1.0/1.1/2))\r\n
  • 首部行(header):请求的属性,‘:’分割的键值对,每组属性之间用\r\n进行间隔。
  • 空行:\r\n; 协议头的结束标记
  • 实体体(body):空行后面的内容都是body,body允许为空字符串,如果body存在,通常会在header中有一个 Content-Length的属性来记录body的长度

在这里插入图片描述

举个例子:

GET /test.html?name=test&password=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫小八

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值