网络概述

什么是网络?

网络一般分为2种,局域网和广域网。

        局域网(local area network,LAN,私网,内网):局域网是结构复杂程度最低,目前应用最广泛的计算机网络,它仅仅是在同一地点上经网络连在一起的一组计算机。

局域网特征

        城域网(MAN)介于LAN和WAN之间。

        广域网(wide area network,WAN,公网,外网)它是影响广泛的复杂网络。WAN由两个以上LAN构成,这些LAN间的连接可以穿越30mile以上的距离。大型的WAN可以由各大洲的许多LAN和MAN组成。最广为人知WAN就是Internet,它由全球成千上万的LAN和WAN组成。

网络协议?

        协议就是规则,在计算机网络中我们不同系统不同设备的数据传输也需要有一套系统的规则来约定。计算机之间的通讯协议叫TCP/IP协议(族),族的意思是,这里面有许多的协议。

        在早期的计算机网络中,都是由各自的厂商自己规定一套协议,IBM,Apple和microsoft都有自己的网络协议互不兼容,为了把全世界所有的设备(计算机,手机,路由等等)都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite)就是通用协议标准。因为互联网协议中包含了非常多的协议标准,但是最重要的就是2个协议一个是TCP一个是IP协议,所以大家把互联网的协议简称TCP/IP协议。

        TCP协议,根据功能不同分不同的层。理论上有7层,但我们实际应用时候一般按4层来开发。

理论7层
实际应用按4层来开发

互联网协议入门

全世界几十亿台电脑连接在一起进行通讯,上海某一块网卡发出的信号在洛杉矶另一块网卡居然能接收到信号,但两者实际上根本不知道对方的物理位置。这不是很神奇的事情吗?

互联网的核心是一系列协议,总称“互联网协议”。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理

互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。用户接触到的,只是最上面的一层,根本没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。如何分层有不同的模型,有的模型分七层,有的分四层。我觉得,把互联网分成五层,比较容易解释。应用层——传输层——网络层——链接层——物理层

每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做"协议"(protocol)。互联网的每一层,都定义了很多协议。这些协议的总称,就叫做"互联网协议"(Internet Protocol Suite)。它们是互联网的核心,下面介绍每一层的功能,主要就是介绍每一层的主要协议。

实体层:

电脑要组网,第一件事要干什么?当然是先把电脑连起来,可以用光缆、电缆、双绞线、无线电波等方式。这就叫做"实体层",它就是把电脑连接起来的物理手段。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

链接层:

        单纯的0和1没有任何意义,必须规定解读方式:多少个电信号算一组?每个信号位有何意义?它在"实体层"的上方,确定了0和1的分组方式。

        以太网协议:早期的时候,每家公司都有自己的电信号分组方式。逐渐地,一种叫做"以太网"(Ethernet)的协议,占据了主导地位。以太网规定,一组电信号构成一个数据包,叫做"帧"(Frame)。每一帧分成两个部分:标头(Head)和数据(Data)。"标头"包含数据包的一些说明项,比如发送者、接受者、数据类型等等;"数据"则是数据包的具体内容。如果数据很长,就必须分割成多个帧进行发送。

电信号-数据包-帧

        MAC地址:上面提到,以太网数据包的"标头",包含了发送者和接受者的信息。那么,发送者和接受者是如何标识呢?以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。每块网卡出厂的时候,都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个十六进制数表示。

        广播:首先一块网卡怎么会知道另一块网卡的MAC地址把数据包准确传送到接收方?它不是把数据包准确送到接收方,而是向本网络内所有计算机发送,让每台计算机自己判断,是否为接收方。它们读取这个包的"标头",找到接收方的MAC地址,然后与自身的MAC地址相比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。这种发送方式就叫做"广播"。

        链接层有了以太网协议对数据包的定义网卡的MAC地址广播的发送方式,就可以在多台计算机之间传送数据了。

网络层:

        IP协议

        以太网协议依靠MAC地址和广播方式 若两台计算机在同一个子网内(合理,否则一台计算机发送数据,互联网上每一台计算机会收到一个包,但这样自网内计算机都会收到数据包,效率还是太低),发送数据。

        必须找到一种方法,能够区分MAC地址是否属于同一个子网。如果是同一个子网络,就采用广播方式发送,否则就采用"路由"方式发送。("路由"的意思,就是指如何向不同的子网络分发数据包,这是一个很大的主题,本文不涉及。)遗憾的是,MAC地址本身无法做到这一点,它只与厂商有关,与所处网络无关。

        于是出现了网络层,他的作用是引进一套新的地址,使得我们能够辨别计算机是否属于同一个子网络,这套地址就叫网络地址(简称网址)。   MAC地址是绑定在网卡上的,网络地址是管理员分配的,网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包传送到该子网络内的目标网卡,否则就用路由方式发送。

        IP协议,规定网络地址的协议就叫IP协议,它所定义的地址就叫IP地址。目前广泛应用的是IP协议第四版,简称IPv4,这个版本规定,网络地址由32个二进制位组成。互联网上的每台计算机会被分配一个IP地址,通过IP和子网掩码可以计算出网络地址和主机号,若两个IP的网络地址相同,主机号不同则处于同一子网中。

        所以IP协议的作用主要是,1、为每一台计算机分配一个IP地址。2、确定哪些地址在同一个网络。        

        IP数据包

        根据IP协议发送的数据包,就叫IP数据包。IP数据包直接放进以太网数据包的"数据部分",因此完全不用修改以太网的规格。这就是互联网分层的好处,上层的变动不涉及下层的结构。

以太网数据包
加入IP数据包的以太网数据包

        ARP协议

        因为IP数据包是放在 以太网数据包 里发送的,所以我们必须知道同时知道对方的 MAC地址 和 IP地址通常情况我们是知道它的IP地址,但不知道MAC地址。所以我们需要一种机制,能够从IP地址得到MAC地址。

        第一种情况,两台主机不在同一个子网络,那么事实上得不到对方MAC地址,只能把数据包传送到两个子网连接处的“网关”,让网关去处理

        第二种情况,如果两台主机在同一个子网络,那么我们可以用ARP协议,得到对方MAC地址。ARP协议也是发出一个数据包(包含在以太网数据包中),其中包含它所要查询的IP地址,在对方MAC数据栏填入"FF:FF:FF",表示这是一个“广播地址”,他所在子网络的每一台计算机会收到这个数据包,从中取出IP地址,与自身的IP地址比较。如果两者相同,就作出回复,向对方报告自己的MAC地址,否则就丢弃这个包

        ARP协议,帮助我们得到同一个子网中的主机的MAC地址,可以把数据包发送到任意一台主机之上了。

传输层

        有了MAC地址和IP地址,我们已经可以让网络上任意两台主机建立通信。接下来的问题是,同一台主机上有许多程序都需要用到网络,比如一边浏览网络一边qq聊天,当一个数据包从互联网发来时候,我们需要一个参数确定这个数据包到底供哪个程序(进程)使用,这个参数就叫“端口”,它其实是每一个使用网卡的程序的编号,每个数据包发送到主机特定的端口,所以不同的程序就能取到自己所需的数据。

        “端口”是0~65535之间的一个整数,正好16个二进制位。0~1023的端口被系统占用,用户只能选用大于1023的端口。不管聊天还是浏览网页,应用程序会随机选用一个端口,然后与服务器的响应端口联系。

        "传输层"的功能,就是建立"端口到端口"的通信。相比之下,"网络层"的功能是建立"主机到主机"的通信。只要确定主机和端口,我们就能实现程序之间的交流。因此,Unix系统就把主机+端口,叫做"套接字"(socket)。有了它,就可以进行网络应用程序开发了。

        UDP协议

        现在我们必须在数据包中加入端口信息,这就需要新的协议。最简单的实现叫UDP协议,它的格式几乎就是在数据前面加上端口号,也是由"标头"和"数据"两部分组成。"标头"部分主要定义了发出端口和接收端口,"数据"部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的"数据"部分,而前面说过,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包现在变成了下面这样:

加入IP数据包和UDP数据的以太网数据包

        TCP协议

        UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到。

        为了解决这个问题,提高网络可靠性,TCP协议就诞生了。这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认。如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了

        因此,TCP协议能够确保数据不会遗失。它的缺点是过程复杂、实现困难、消耗较多的资源。

        TCP数据包和UDP数据包一样,都是内嵌在IP数据包的"数据"部分。TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。

应用层

        应用程序收到"传输层"的数据,接下来就要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读。

        "应用层"的作用,就是规定应用程序的数据格式。

        举例来说,TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了"应用层"。

        这是最高的一层,直接面对用户。它的数据就放在TCP数据包的"数据"部分。因此,现在的以太网的数据包就变成下面这样。

总数据包

小结:

        网络通讯就是交换数据包,发送数据包需要知道两个地址 1、对方MAC地址。2、对方IP地址。 但若两台电脑不在同一个子网中,就无法知道对方MAC地址(在同一个子网中,若接收方确定IP符合会向对方报告自己的MAC地址),必须把数据包通过网关A(需要知道网关A的MAC地址)转发。网关通过路由协议,发现目标IP位于子网络B中,又把数据包发给网关B,网关B再把数据包转发给相应主机。

        我们上网需要我们填写4个参数(太专业对用户不友好、如果IP不变其它电脑不能使用这个IP,不够灵活),本机IP地址、子网掩码、网关IP、DNS的IP。大多数用户使用“动态IP地址上网”,计算机开机后自动分配一个IP地址,它使用的协议是DHCP协议。它规定,每一个子网络中,有一台计算机负责管理本网络的所有IP地址,它叫做"DHCP服务器"。新的计算机加入网络,必须向"DHCP服务器"发送一个"DHCP请求"数据包,申请IP地址和相关的网络参数。

        我们输入了www.google.com,首先通过DNS协议我们得到域名对应的IP地址,通过子网掩码(计算出该IP的网络地址)判断我们是否在同一子网,如果不在同一子网,我们通过我们子网的网关(得知道网关IP,然后由请求网关IP得到网关MAC,再通过网关转发)。浏览网页用的是HTTP协议。TCP数据包需要设置端口(根据TCP协议),然后TCP数据包嵌入IP数据包(根据IP协议),最后嵌入以太网数据包(根据以太网协议)。经过多个网关转发,谷歌服务器收到以太网数据包。

        

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容

  • 文章首发于个人blog欢迎指正补充,可联系lionsom_lin@qq.com原文地址:《网络是怎样连接的》阅读整...
    lionsom_lin阅读 14,141评论 6 31
  • 一、什么是TCP/IP 网络和协议 1. TCP/IP是一类协议系统,它是一套支持网络通信的协议集合。网络是计算机...
    karlon的马甲阅读 6,531评论 1 24
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 3,476评论 0 6
  • 依然看到自己在光里,但是停止融化了!附近有人在朝拜我!我不知道什么原因!但是我看到自己因此不愿意融化了!几天以后我...
    竺子阅读 207评论 0 0