一、入门基本知识必读
在讲计算机网络原理前,先看一些基础的文章。对计算机网络有个整体的认识是很有必要的,有利于加深理解。
2、知道常见的网络硬件设备(hub,网桥,交换机,路由器,网关)
中国网民的上网史,应该从ChinaNET 建成后算起。后文提到的 模拟拨号上网,ISDN上网,ADSL上网,光纤上网,这些都是接入方式。这些都叫接入层,接入层最终都会连接到核心层,也就是ChinaNET(电信的网络,为了方便不考虑移动联通)。通过ChinaNet与国际互联网相连,ChinaNet的网络架构一直再随历史发展,数据链路层和物理层,不清楚到底用什么方案。【至于网络层都是IP数据包】
了解完上面的知识点后,我们便以普通网民的角度,方便理解,继续讲解计算机网络原理。
二、网民上网简史
第一阶段:模拟电话拨号上网
利用电话局的线,接个猫(模拟信号转数字信号),接个网线到pc。
V90协议,电话拨号上网(下行56kbps,上行33.6kbps)
V92协议 电话拨号上网(下行 56kbps 上行48kbps)
V90,V92应该是猫调制数字信号的协议,这个阶段电话线要么上网,要么打电话,不能同时占用。
至于运营商那边的网络,应该是PSTN(公共交换电话网络)
国内 用的 是 RS232 接口,连接猫,再连接pstn 电话网。
网络
- 接入网/本地回路 ——– 模拟线路
- 电话交换机/局(端局、汇接局、长途局) ——- 数字化程控交换,提供交换连接
接入技术
- 通过PSTN接入因特网
- 物理层主要使用RS-232
- 数据链路层为PPP(点对点协议)
- 网络层为IP
看看下图中的–端局 –>后面直接 接入 因特网了,也就是上图说的数字传输。
入网方式
- 通过普通拨号电话线入网
- 通过租用电话专线入网
- 经普通拨号或租用专用电话线方式由PSTN转接入公用数据网【又叫PDN或者PDSN】的入网方式
###########################################
PDN是许多网络的泛称,最初PDN主要指 X.25网络【X.25是三层结构,物理层:X.21;数据链路层采用LAPB(HDLC 协议的一部分)网络层:PLP ,用于点到点连接 】【X.25是点到点连接,网络原理-网络拓扑与多路访问和路由协议 提到过,但那篇文章存有 X.25 关于 多路访问的疑问】
帧中继(Frame-Relay)保留了X.25数据链路层的HDLC帧格式,但不采用HDLC的LAPB,而是采用LAPD。LAPD能在数据链路层实现链路的复用和转换,所以帧中继只有物理层和数据链路层。确切来说,帧中继是基于ISDN的LAPD的数据链路层协议。用于点到点连接和点到多点连接。点对点子接口是每一个子接口一个网段,也就是说,中心节点和每一个分支都是一个网段。点对多点子接口,就是中心节点和所有的分支都在同一个网段。
PDN网络作为接入方式,可以与因特网相连。【如中国电信的CHINAPAC网络就与CHINANET相连了】
PDN现在包括了1、分组交换如 X.25、帧中继 2、电路交换 如ISDN
**************************************************
但是看了老网民的回忆:说猫的出口是 RJ45的网口,猫的进口当然是电话线啦。
资料如下:
对与国内的绝大多数网民来说,最早接触互联网就是通过电话线和56K“猫”(Modem,调制解调器)来实现的,即电话拨号上网——通过普通电话线音频波段进行数据通信,而其中“猫”的作用就是将数字信号调制到模拟载波信号上进行传输,并解调收到的模拟信号以得到数字信息。电话拨号上网属于典型的常见民用窄频接入,接入带宽从9600bps到56Kbps(V.92标准),期间还包括14.4K、28.8K、33.6K等等,相信亲身体验过的网民朋友并不多。
内置56K调制解调器(图片来源:www.ebay.com.hk)
网民们最早接触到的56K“猫”通常就是这种“内置”版本,接口类型包括PCI、ISA和笔记本专用的PCMCIA等等,优点在于无需外接电源,较稳定,而缺点则是需要拆开机箱安装,比较麻烦;与此同时,市场中还出现了外置的56K“猫”,以及USB“猫”,它们的应用效果与内置“猫”相比并无差别,只不过安装起来较为方便。
56K“猫”所使用的是非对称性技术,理论上讲,上传速率可达48Kbps,下载速率则可达56Kbps,当然这仅仅是理论极值,因为在实际上网中,其速度通常仅有5KB/s左右,然而就是这样的“窄带”,却足以满足当时网民们收发邮件,浏览新闻,甚至是进行软件下载(还记得网络蚂蚁这款软件吗?)的需求。当然,电话拨号上网也有弊端,而其中最显著的就是在上网时,电话就无法使用了。
==================下面是外国连接pstn的情况=================
年代久远,听说连pc用的是BNC-T接口,那样的话物理层就是同轴电缆了,应该只支持半双工,估计这里应该是半双工的以太网,然后数据链路层是PPP协议,用于拨号上网。问题是PPP协议是全双工协议。google了一下,说因为半双工的以太网进行了一些设置,可以兼容 PPP协议。
找到了答案:https://groups.google.com/forum/#!topic/comp.protocols.ppp/JnYZG7hFvzo
Randy Dawson <rdaw…@houston.rr.com> writes:
> I have an application for a ‘one wire’ and ground PPP serial
> connection. This is long (2-3 mi) coax, too long for ethernet, but I
> can transmit megabaud serial OK thru it.
>
> Is it possible to force PPP to half duplex, so TX and RX can share the
> same conductor?In general, PPP cannot run half-duplex. This is stated right up front
in RFC 1661:1. Introduction
The Point-to-Point Protocol is designed for simple links which
transport packets between two peers. These links provide full-duplex
simultaneous bi-directional operation, and are assumed to deliver
packets in order. It is intended that PPP provide a common solution
for easy connection of a wide variety of hosts, bridges and routers
[1].However, what really matters here is whether the medium *appears* to
be full duplex to users. For instance, plain old Ethernet is actually
half-duplex — there’s at most one transmitter at a time — but the
way the protocol is specified (using idle and collision detection), it
*appears* to be full duplex to the clients because they can transmit
at any time. Thus, PPP can run over Ethernet despite the apparent
mismatch.So, if your physical layer implementation somehow allows for automatic
turn-around, such that neither PPP peer ever has to issue ‘go ahead’
signals, and neither functions as a master or slave, then you can make
this work.> I need to disable RX interrupt from the endpoint I am transmitting, so
> I do not ‘hear myself’Right. PPP will fall apart if that happens.
> That the transmitters never go active when they detect serial data on
> their RX’s untill EOTRight. If you can emulate something like Ethernet at the physical
layer — check for idle, start sending, make sure you’re not
overlapping with the (or any) peer, back off in case of trouble and
try again — then you should be good to go.> This is a master slave setup, where only one guy will ask for data.
> The master will request a file from slave and let an already built
> protocol (PPP) do error check and retransmit frames as required.No. Master/slave is fine from the application layer design, but PPP
itself requires the underlying physical connection to be peer-to-peer.> I want to FTP files from the slave, but I must share the same TX RX
> medium NO modems just baseband serial going two directions, one at a
> time. Half duplex.If you really want to do half-duplex (requiring some sort of polling
and line turn-around signal), you’re on your own. It might be
possible to do this by hacking the PPP state machine and constraining
the way the protocol is designed to work, but that’s essentially
equivalent to inventing a _new_ protocol that just happens to look a
bit like PPP. It won’t be compatible with any other implementation.If compatibility isn’t important for some reason (some sort of ‘walled
garden’), then that might be reasonable. It might also be fairly hard
to make reliable.(It might also be possible to make such a line turn-around mechanism
simply turn the line around continuously when idle. That’d be
sufficient, though perhaps a bit tricky to get right in the face of
errors, and the processing overhead might be considered “high,”
depending on the design constraints.)—
James Carlson, IP Systems Group <james.d…@sun.com>
Sun Microsystems / 1 Network Drive 71.234W Vox +1 781 442 2084
MS UBUR02-212 / Burlington MA 01803-2757 42.497N Fax +1 781 442 1677
第二阶段:数字电话直接上网
刚刚已经提到,拨号上网最大的弊端就是上网时打不了电话,而为了改善这一情况,ISDN应运而生。ISDN(即Integrated Services Digital Network,综合业务数字网)是一个数字电话网络国际标准,是一种典型的电路交换网络系统(circuit-switching network)。简单来说,它就是采用数字交换和数字传输的电信网的简称,在国内叫做“一线通”。
在通过ISDN上网时,用户不仅可以拨打电话、发传真,同时还可获得更好的语音和数据的传输速率和质量。虽然其与电话拨号上网一样,同为窄频接入,但其接入带宽已提升至64/128Kbps,实际上网时的速度更是可达10KB/s以上,相比56K“猫”有了成倍的增长。与此同时,以铜缆作为介质的ISDN是全部数字化的电路(只有0和1这两种状态),所以它能够提供更加稳定(不像模拟线路一样易受干扰)且创新的数据业务服务(例如视频、视像会议、图像等等)。
【在其他国家,B-ISDN也有去发展了,该网络的数据链路层协议是ATM】
N—ISDN线接入家中时,因为是数字信号,所以这个时候就不需要猫了。这个阶段家里是以太网,应该用的是PPPOE拨号上网技术了。
ISDN终端适配器如下:【包括电源,isdn接入线,两个电话口,两个网线口】
说明:S/T 就是我们说的RJ45以太网网线接口。
上海贝尔 ISDN SBT6015 “一线通” usb终端适配器sta/usb用于pc机的 isdn接入,支持即插即用。带有一个标准的rj45接口,用以连 接isdn网络终端(nt)的s/t口;一个usb接口,用以连接计算机 的usb接口。 (上海贝尔“一线通”usb终端适配器也可以称作”数字 modem”)
上海贝尔 ISDN SBT6013产品特点
· 即插即用外置式终端适配器
· 用于PC机的ISDN接入,为您提供快速 Internet、Intranet访问
· ISDN S/T接口,符合I.430协议
· 只提供串口
· 计算机环境:Win95,Win98.WinNT,Win2000或更高
· 支持BOD(动态带宽调整)功能,有电话拨入时可自动释放一个B信通
· 同步/异步PPP,ML-PPP, V.120速率适配
· MODEM AT 命令集
· 提供的CAPI平台可支持一切基于CAPI的数据传输,数据会议等应用软件
· 可通过数据口下载更新软件
关于网卡普及问题:
看了上面的资料,可能揣测 模拟电话拨号上网56Kbps阶段,那个时候网卡不普及,只能自己买网卡。后来的ISDN阶段,看到 架构图,好像网卡普及了,不知道 是在 ISDN阶段 还是 在ADSL 阶段,才在主板上集成了 网卡。
网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,其不仅能实现与局域网传输介质之间的物理连接和电信号匹配,还涉及帧的发送与接收、帧的封装与拆封、介质访问控制、数据的编码与解码以及数据缓存的功能等。
第三阶段:ADSL拨号上网
告别窄带接入 ,ADSL引领宽带时代。
这个阶段,中国电信的骨干网chinanet,上面采用的是ATM技术。连接到家里的是电话线(里面有两根铜线),里面传输的是模拟信号。相当于还是那个PSTN网络。
ADSL(Asymmetric Digital Subscriber Line,即非对称数字用户线路/环路),其与拨号上网一样,同样采用非对称技术,只不过上行带宽和下行带宽的差距更加明显(目前来看,最高上行速率为1Mbps,最高下行速率为8Mbps)。与此同时,其采用频分复用技术把普通的电话线分成了电话、上行和下行三个相对独立的信道,从而避免了相互之间的干扰。这既解决了拨号上网电话占线的问题,也带来了更加出色的网络质量。
ADSL(非对称数字用户线路/环路)网络接入
因为到家里的是模拟信号,所以需要ADSL调制解调器(分离电话信号和网络信号),解调完后一根电话线连电话机,一根网线可以连电脑了。
这个阶段,家里是以太网了,用的是双绞线,然后拨号是pppoe(PPP over Ethernet)上网了,通俗讲 以太网帧的数据包里面封装了PPP帧。
相信不少朋友还听说过ADSL2+,那么它与ADSL又是什么关系呢?其实简单来说,ADSL2+就是ADSL的技术升级版,其突破了ADSL带宽限制的瓶颈,将最高上行带宽(速率)提升至3.5Mbps,最高下行带宽(速率)提升至24Mbps。而除了ADSL2+外,凭借VDSL技术,可使带宽进一步升级到上行19.2Mbps,下行55.2Mbps。当然,前提是电信服务提供商的设备端和用户终端之间距离小于1.3公里,而距离的限制,也正是ADSL(xDSL)的短板。
第四阶段:光纤上网
这个阶段,
国家骨干网的技术 :
OTN是用在:核心层–>骨干层(物理层)
PTN是用在:骨干层–>汇聚层–>接入层(物理层)
PON是用在:接入层(物理层,数据链路层)
=======================================
光纤连接到小区楼 FTTB(然后采用交换机连接到用户家),然后用普通双绞线连接到家里。
光纤连接到家里 FTTH(直接连接到家里,光纤先在楼里用分光器,然后再从楼里用光纤继续连接到家里,主要是分光器不耗电);光纤到家里时,再用光猫,将数字光信号解调成数字信号。这样我们就可以用以太网上网了。拨号还是用PPPOE。
光纤从骨干网边缘,连接到用户这,采用GPON或者EPON技术。目前运营商两者都有,我家是GPON接入。简单的说EPON可以最大支持1比32的分光。GPON可以支持1比64的分光、经过优化后最大可以支持1比128的分光。
现在基本都是GPON。光纤到户,一个端口能带64户。。。。。如果是EPON,一个端口最多能带32户,所以EPON一般都用在光纤到单元,再楼道里加交换机使用。。。。整体网速等基本没区别,最好用GPON。
这么说吧,ftth 和 fttb 的区别就是一个是光纤到户和光纤到楼,你说的楼道里多出来那个小箱子里面是分光器。
至于怎么区分,很简单,ftth 入户用的是光纤,必须配合光猫才可以使用。光纤长什么样子?入户光纤一般是黑色或者白色,特别细。尾部一般是黄色的,接头是蓝色的。
光猫的作用通俗的说就是将光信号转为电信号.
fttb 使用网线入户,可以不用光猫,直接插路由器电脑就可以使用。
目前我见过的大部分光改了的小区都是 FTTH,因为 ftth 易维护,成本总体来说低一点。只要主光缆分光器没问题,一般不会有什么事情.
FTTB 则是在楼道放的交换机。
FTTH 虽然在前期投资建设方面成本高,比如需要 OLT,PON 板之类的,但是更稳定一点,易维护.
分光器无需供电,交换机需要供电.大大减少了维护成本.
FTTH 是未来的主流,因为光纤相比网线来说更稳定,不受电磁干扰.
在 100M 以下的带宽差别不是太大,但是到了现在各大城市都在推行 200 300 甚至千兆入户的情况下,要想用网线跑到这个速率,太艰难了.
=============================================
补充:
PTN 和OTN 都属于传送技术, 所以他们都一般定为在网络OSI的物理层, 也就是提供物理连接,提供路由器到路由器的传送通道.
不同的是,
OTN提供的是物理通道, 每一个波长/子波长提供一个点到点的通道.
PTN 除了提供通道之外, 还可以在网络中表现得像二层设备或三层设备, 具备分组交换能力, 通常会用MPLS为网络层提供VPN通道.
PON是一种接入技术, 就像家庭以前用的ADSL一样, 工作在OSI的物理层以及数据链路层.【产生了GPON和EPON在数据链路层。】PON中OLT提供的业务描述, 一般最终用户经过ONU来进行接入, 可以提供 宽带, POTS电话, IPTV, VOD, E1 等业务接入
====================================================
三、网络信息的来龙去脉
由于平时上网都是,以太网,所以我们主要用以太网的情境去讨论上网问题。
本节主要以OSI七层模型,对上网情形进行逐层探讨。
上网时,我们连接的网线属于物理层。我们拨号上网用的是PPPOE,属于数据链路层。用数据链路层的以太网帧封装了PPP。
1、上网时,浏览器访问网页,采用HTTP协议(应用层)
2、HTTP访问请求会被封装成包,加上源端口号目标端口号,交由TCP传输。
3、tcp数据包+源IP地址和目标IP地址,一起封装成IP数据包,交由物理层。
4、物理层是以以太网帧的形式发送和接收数据的。【所以说以太网包括一层和两层】以太网帧需要包括目标主机mac地址和源主机mac地址。所以,在第一次传输时,需要arp请求(广播方式),获取目标主机的mac地址。获取成功时,将以太网帧,交由物理层进行传输。
5、物理层 在 以太网帧前面,又添加了八个字节 其中前面7个字节是前同步码。后面一个字节是帧开始界定符。
物理层原因如下:因为以太网采用的是同步传输模式,我在 入门必备常识 里已经提到过。同步传输可以一次性传输多个bit位,发送数据时,数据头部会添加同步码,数据尾部会添加区块结束字符(不一定有)。而异步传输是一次传一个字节或更长,每次传数据时 ,数据段前后都标有起始位和终止位(资料太少,不清楚起始位和停止位是否都只占一位【bit】)。
为什么需要同步码,因为计算机都是有时钟频率的,计算机根据时钟频率对目标信息编码,每一个编码才会占用一定的时间。同样解码时,也会根据时钟频率,每解一个码占用一段时间。如果编码时是001100,解码的时钟频率慢了一倍,可能解析结果就是010,所以同步时钟频率就是为了,解码和编码时结果能统一。
物理层除了添加信息以外,还包括物理编码。百兆以太网100BASE-T用的4B/5B编码与MLT-3编码组合方式,发送码流先进行4B/5B编码,再NRZ-I,最后进行MLT-3编码,最后再上线路传输;说到底这些编码都是为了从数据中恢复时钟。
物理层还包括协议自动协商过程,因为以太网有好几种速率,10M,100M,1000M,等。现在的设备都支持各种以太网速率。网线一端连电脑,一端连路由器。那么两端就会协商采用,1000M还是100M的网速协议,看看双方是否都支持,这就是自动协议协商。
6、物理层会经多个节点传输,在多个路由器上传播,每经过一个节点都会层层拆包,检查网络层上的IP数据包的目标IP地址,并查看路由表,决定发往哪个路由器。决定完路由路线后,又将ip数据包层层封装成物理层信号,进行传输。
7、就这样数据经过多个路由器,多个网关,到达了目标主机地址。然后目标主机将数据层层拆包,到达应用层,供服务器软件使用。同理服务器返回应答的信息,传输过程也一样。
上图中说明:数据链路层有帧头和帧尾。帧尾是FCS(冗余检验码),以太网帧的帧头从目标mac地址开始。
物理层中:以太网帧前面还添加了帧同步符(前同步码,前导码)和帧界定符(帧开始符)。
以太网帧常见的有:IEEE 802.3 和 DIX Ethernet V2 两种结构。
前导码 | 帧开始符 | MAC 目标地址 | MAC 源地址 | 802.1Q 标签 (可选) | 以太类型 | 负载 | 冗余校验 | 帧间距 |
---|---|---|---|---|---|---|---|---|
10101010 7个octet | 10101011 1个octet | 6 octets | 6 octets | (4 octets) | 2 octets | 46–1500 octets | 4 octets | 12 octets |
64–1522 octets | ||||||||
72–1530 octets | ||||||||
84–1542 octets |
接下来,整体感知一下计算机数据通信全过程。
上图是数据包在互联网中的传送 (R1…R5,这些标记都是路由器)
上图是对数据包在互联网中传送的一个详细解读!!!
从图中我们可以看到有两个局域网通过两个路由器相连。我们现在假设图中PC4给PC3发送数据。
发送端PC4
- 1、应用程序准备要传输的文件
- 2、传输层 将文件分段并编号 数据段
- 3、网络层 将分好段的数据加IP地址封装成包 数据包
- 4、数据链路层 两种情况:
- 使用自己的子网掩码 判断自己在哪个网段
- 使用自己的子网掩码 判断目标地址在哪个网段
- 如果是同一个网段,则使用ARP协议解析目标IP的MAC地址
- 如果不是同一个网段,则使用ARP协议解析网关的MAC地址,将数据包交给路由器
- 将数据包加上MAC地址和帧检验序列(FCS)交给物理层进行发送
集线器的做法:集线器是物理层的设备,只负责转发比特流
交换机的做法:将数据进行存储转发,他可以把比特流存储起来拆封装成数据帧,看到里面数据帧的MAC地址,根据目的MAC地址和自己的MAC地址表进行转发
路由器的做法:可以将传来的比特流存储起来拆封装成数据包,看到里面的IP地址,根据目的IP地址和自己的路由表将数据包交给下个路由器
最后到达PC3,主机将比特流接收后开始按照与发送端相反的步骤一层一层拆封装,直到把要接收的数据拆出来,一次通信完成。
关于具体的OSI每一层的内容,可参看其他文章。
也可以看 计算机网络详解-上网内部流程分析 这篇文章。
个人感觉不错的书:《计算机网络自上而下》
参考:
udp 问题 :https://blog.csdn.net/ddr77/article/details/52400439
arp问题:https://blog.csdn.net/cuiweitju/article/details/38761381
==================================================
tcp/ip 专栏
http://www.cnblogs.com/zhangyinhua/category/1086895.html
http://blog.sina.com.cn/s/articlelist_1597552525_0_1.html
网络知识参考书:
https://wizardforcel.gitbooks.io/network-basic/content/7.html
=================================================
https://blog.csdn.net/qq_20233867/article/details/73856180