❤️💕💕计算机网络--TCP/IP 学习。Myblog:http://nsddd.top
[TOC]
为了在浏览器中更好的浏览公式,你需要在谷歌浏览器中安装插件https://chrome.google.com/webstore/detail/mathjax-plugin-for-github/ioemnmodlmafdkllaclgeombjnmnbima
-
互联网中的设备称为主机(host)或者终端系统(end system),包括客户端和服务器
- 主机通过通信链路和分组交换机连接
- 路由器和链路层交换机都是分组交换机
-
ISP
是因特网服务供应商 有不同层级 -
分组交换:主机与主机之间通过报文(message)通信,长的报文又会被分割成分组(packet、包)
- 每个分组都通过通信链路和分组交换机传送
- 多个分组交换机在链路中的输入端使用的是存储转化传输
-
存储转发机制:交换机在收到一整组报文之后才开始向输出链路输出
-
对于每一条输出链路分组交换机都有一个输出缓存,包必须在输出缓存里排队,这叫排队时延,一旦缓存占满,则会丢包
- 设置缓冲区(链路层讲解)
-
在因特网中,IP地址的多级结构信息和路由器的转发表,决定了路由器拿到包之后往哪条链路送。
- 文件和域名的多级结构为了解决的是重复命名的问题。
- 转发:数据层面 – 局部功能(决定从哪个路口进去)
- 路由:控制层面 – 全局功能(通过判断最优的路径)
-
转发表是由路由选择协议自动设置的(在网络层学到路由选择协议详细讲)
-
电路交换:另一种端与端通信手段,电话是这种手段的典型例子。特点是源和目标点建立起名副其实的连接,称为电路,这条路上的带宽全部为这个连接空出来。所以电路交换的速度非常可靠。
通过网络链路和交换机移动数据有两种基本方式:电路交换和分组交换。
链路中的电路是通过频分复用技术(FDM)或者时分复用技术(TDM)实现的
电路交换 | 分组交换 | |
---|---|---|
实现 | 复杂,成本高 | 简单,成本低 |
可靠性 | 可靠 | 延时不可预测 |
利用率 | 低,有空闲浪费 | 高,可共享空闲资源 |
特点 | 专线专用 | 共享路由 |
-
分组交换中时延的分类
- 处理时延:检查分组首部和决定将该分组导向何处所需要的时间是节点处理时延的一部分。其他因素包括检查比特级差错处理(通常是微秒级以下)等。在这之后,路由器将包引向通往路由器B链路之前的队列。
- 排队时延:在队列中,当分组在链路缓存中等待传输时,它经受排队时延。 到达组的分组数量是到达该队列的流量强度的函数。实际的排队时延通常在毫秒到微秒级。
- 传输时延:用L比特表示分组的长度,用R b/s表示从路由器A到路由器B的链路传输速率。传输时延是L/R。这是将所有分组比特推向链路所需要的时间。实际的传输时延通常在毫秒到微秒级。是包从路由器A中被推出去的时间。与两路由器的距离无关。
- 传播时延:一旦一个比特被A推向链路,该比特需要向路由器B传播,从该链路的起点到路由器B的传播所需要的时间是传播时延。该比特以该链路的传播速率传播,其速率范围等于或略小于光速。传播时延等于两台路由器之间的距离除以传播速率,即传播时延是d/s,d是两台路由器间的距离,s是该链路的传播速率。传播时延在毫秒级。
传输时延可以看做是车队(包)过收费站(路由器)的时间,而传播时延可看作路上花费的时间。
-
排队时延的特殊之处
排队时延是一个比较复杂的时延,可能导致的时延很大或者很小。
- 对于不同的分组(包)可能不一样(后到的可能要等先到的)
- 可能会有不同的算法(先进先出,或者优先算法,腾讯会员制)
- 取决于流量本身的特点(即突发还是平稳),包括流量到达该队列的速率、链路的传输速率和到达流量的性质
- 令a表示分组到达队列的平均速率(每秒多少分组,pkt/s),假定所有包都是L b组成的,则比特到达队列的平均速率是La bps。而La/R被称为流量强度
- 如果La/R > 1,则比特到达队列的平均速率超过从该队列传输出去的速率。在这种不幸的情况下,队列的增加将趋近于无界,并且排队时延将趋向无穷大。因此,流量工程中设计系统时流量强度不能大于1。在因特网中,接近1时将容易发生丢包。
- 如果到达的分组将发现是一个已经满了的队列(quit) ,那么此时可能会发生丢包。
- 第n个分组有$$\frac{(an-1)}{R} $$的排队时延
- 对于不同的分组(包)可能不一样(后到的可能要等先到的)
-
端到端时延 假设源主机和目的主机之间有N-1台路由器,并且该网络是无拥塞(不排队)的。那么端到端时延为 $$ d_{end-end} = N (d_{proc} + d_{trans} + d_{prop}) $$
-
$$d_{proc}$$ 是每台路由器和源主机上的处理时延 $$d_trans = \frac{L}{R}$$ -
$$d_{prop}$$ 是每条链路的传播时延
-
-
吞吐量
- 在如以太网路及封包无线电之类的电信网络之中,吞吐量或网络吞吐量是指于一通讯通道上单位时间能成功传递的平均资料量,资料可以于实体或逻辑链接上传递,或通过某个网络节点。吞吐量的单位通常表示为位元每秒(bit/s或bps),有时也可看到封包每秒或封包每时槽等单位。
- 在因特网内表现为网速。
其实在网络层以及下面的链路层的学习中我们会发现很多的新的技术或者网络(SDN) 跨越了很多的层,但是这并不影响我们对网络分层的了解。
网络层经常是软件和硬件的混合体。
-
因特网的协议栈
-
应用层(信的格式)
- 应用程序的协议。
- 我们把应用层的信息称为报文。
- 典型协议如
HTTP
、FTP
、SMTP(电邮)
、DNS
。
-
运输层(平信还是挂号信、邮递员(邮局到家的投递))
- 在应用程序端点之间传输应用层报文的协议。
- 因特网中常用的有两个,即
TCP
和UDP
。(能解决大部分问题,所以主要就是这两个) - TCP:面向连接,分割长报文,拥塞控制机制,可靠传递,双方速率匹配。
- UDP:无连接(当然,可以根据需要自己修改嘛)。
- 处于运输层的分组叫做报文段(segement)
-
网络层(邮局和邮政服务)
在本书中网路层分为控制层面和数据层面
- 负责将数据报(datagram,处于网络层的分组)从主机移动到另一主机,使两端能够互连且决定最佳路径。
- 从运输层拿到报文段和目标地址。然后进行
路由
。 - 网络层的典型协议是
IP
协议,用来识别目标地址。 - 另一典型协议是
网络控制消息协定(ICMP)
,它是IP的主要部分,一般不用于在两点间传输数据。它通常不由网络程序直接使用,除了ping
和traceroute
这两个特例。
-
链路层 — 信件运输员(邮局到邮局)
- 在两个网络实体之间提供数据链路连接的创建、维持和释放管理。
- 构成链路层的分组(称之数据帧或帧),并对帧定界、同步、收发顺序的控制。
- 负责传输过程中的流量控制,差错检测和差错控制等方面。
- 数据链路层中的数据封装是指:封装的数据信息中,包含了地址段和数据段等。地址段含有点对点发送节点和接收节点的地址(如
MAC
),控制段用来表示数格连接帧的类型,数据段包含实际要传输的数据。 - 网络层将数据报下发给链路层,链路层传输后,上报给目标结点的网络层。
- 典型协议:
异步传输模式(ATM)
、帧中继(frame relay)
、高级数据链路控制(HDLC)
。 - 交换机、桥接器是本层设备。而集线器是物理层设备,不是数据链路层设备。
-
物理层(公路和车)
- 将一个比特(bit)一个比特移动。
- 典型协议如:
蓝牙协议
、数字用户线路(DSL)
等等 - 常见物理层设备:网卡、光纤、集线器
-
-
封装
- 因特网协议栈自顶向下传输时,各层会将上层信息包装,上层信息包装为
有效载荷字段
,本层信息包装为首部字段
。 - 应用层报文 -> 运输层报文段 -> 网络层数据报 -> 链路层帧
- 因特网协议栈自顶向下传输时,各层会将上层信息包装,上层信息包装为
-
因特网攻击举例
- 用病毒和木马形成僵尸网络(肉鸡)。
- 拒绝服务攻击,包括弱点攻击(攻击bug)、带宽洪泛(常见、常是分布式,砸流量使丢包和延时)、连接洪泛(伪造大量TCP连接)
- 分组嗅探:抓包,窃取隐私。
- 伪造分组:IP哄骗等等。
- DNS污染