网络编程01 -- 网络模型

  • 互联网的实现,分为不同的层次,每一层都有自己独特的功能,每一层都会其下一底层的支持,针对层级的划分有不同的模型,下面我们探讨的是网络七层模型,如下图所示:
image.png
  • 从最底层往上依次为:物理层,链接层,网络层,传输层,会话层,表示层,应用层;
  • 越接近最底层,越接近硬件;
  • 网络层次的划分,每一层有着自己的功能,为了实现这些功能,就需要大家都遵守共同的规则,大家都遵守的规则,就叫做协议(protocol);
  • 网络的每一层,都定义了很多协议,这些协议可统称为互联网协议,它们是互联网的核心;
物理层
  • 物理层:就是将计算机连接起来的物理手段,它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号;
  • 将计算机连接起来,组成一个网络,可以通过光缆,电缆,无线电波等方式;
链接层
  • 物理层传送过来的0和1的电信号,单纯的0和1是没有任何意义的,必须规定特定的解读方式即多少个电信号为一组,每个信号位有什么意义;
  • 链接层:确定了电信号0和1的分组方式,以及每个信号位的意义;
  • 以太网协议:其规定一组电信号构成一个数据包,称为帧(Frame),每一帧分为两个部分:标头(Head)和数据(Data);
    • 标头(Head)包含数据包的说明,例如发送者,接受者,数据类型等等,其长度为固定的18个字节,
    • 数据(Data):就是数据包的具体内容,其最短为46个字节,最长为1500个字节;
image.png
  • MAC地址:联入网络的所有设备,都必须具有网卡接口,数据包必须是从一块网卡,传送到另一块网卡,网卡的地址就是数据包的发送地址和接收地址,也就是所谓的MAC地址;
  • 每块网卡出厂的时候都有一个全世界独一无二的MAC地址,长度是48个二进制位,通常用12个16进制位进行表示;
  • 有了MAC地址,然后计算机采用广播的方式发送数据包给其他计算机;
    • 首先当前计算机通过ARP协议,知道另一台计算机的MAC地址
    • 其次当前计算机采用广播的方式,给本网络内的所有计算机都发送数据包,本网络内的所有计算机拿到数据包之后,读取标头(Head)中接收方的MAC地址与自己MAC地址进行比较,若相同则接收数据包,若不同则丢弃数据包;
  • 根据上述的数据包,计算机的MAC地址,广播的发送方式,实现了在同一网络中在多台计算机之间传送数据了;
网络层
  • 在链接层实现了同一子网络中计算机之间的数据传输,如何在不同的子网络中实现数据传输呢?答案是网络层;
  • 网络层:其作用是引进一套新的地址,能让我们区分不同计算是否属于同一个子网络,这套地址叫网络地址,简称网址,网络层出现之后,每台计算机就有了两种地址,一种是MAC地址,另一种是网络地址,这两种地址之间没有任何联系,MAC地址是绑定在网卡上的,固定不变的,网络地址是管理员分配的,是可以改变的;
  • 网络地址可以帮助我们确定计算机所在的子网络,MAC地址则是将数据包传送给该子网络中目标网卡;
  • IP协议:规定网络地址的协议,叫做IP协议,它所定义的地址,被称为IP地址,目前,广泛采用的是IP协议第四版,简称IPv4,IPv4这个版本规定,网络地址由32个二进制位组成,习惯上,我们用分成四段的十进制数表示IP地址,从0.0.0.0一直到255.255.255.255;
  • IP地址又分为两个部分,分别为网络部分主机部分,其中网络部分是由多少个二进制位组成是由子网掩码决定的,子网掩码是表示子网络特征的一个参数,也是一个32位二进制数字,它的网络部分全部为1主机部分全部为0
  • 现有两个IP地址175.16.254.1和175.16.254.233以及子网掩码为255.255.255.0,判断这两个IP地址是否属于同一个子网络;
    • 首先IP地址175.16.254.1与子网掩码为255.255.255.0 进行位与运算得到网络部分为175.16.254;
    • 其次IP地址175.16.254.233与子网掩码为255.255.255.0 进行位与运算得到网络部分为175.16.254,看到两个IP地址的网络部分相同,所以它们属于同一个子网络;
  • 总结:IP协议的主要作用有两个:
    • 首先为每一台计算分配一个IP地址;
    • 其次提供子网掩码,确定哪些IP地址属于同一个子网络;
  • IP数据包:根据IP协议发送的数据,称为IP数据包,其中包含IP地址信息,上述的以太数据包中只包含MAC地址,这两种地址是如何组合的呢?答案是把IP数据包直接放进以太网数据包的"数据"部分,因此完全不用修改以太网的结构,这就是互联网分层结构的好处:上层的变动完全不涉及下层的结构;
  • IP数据包的格式如下所示:
image.png
  • IP标头通常占用20-60个字节,整个数据包的最大长度为65535个字节;
  • ARP协议:当前计算机给另一台计算发送数据包,必须要知道另一台计算的IP地址与MAC地址,其中IP地址是已知的,对于获取MAC地址,这里分为两种情况:
    • 第一种情况:两台计算机不在同一子网络,只能只能把数据包传送到两个子网络连接处的"网关"(gateway),让网关去处理;
    • 第一种情况:两台计算机在同一子网络,可通过ARP协议,获取对方的MAC地址;
传输层
  • 由上述可知,有了计算机的IP地址与MAC,就能实现在互联网上任意两台主机上建立通信,但问题是同一台计算机上,运行了多个不同的进程(程序),例如看电影,听音乐,聊天等等,计算机接收到数据给哪个进程使用呢? 这里就引出了端口(port)的概念,其本质应用程序的编号,将数据包发送到计算机特定的端口,端口对应的程序就能取到自己所需要的数据;
  • 端口:是0到65535之间的一个整数,正好16个二进制位,0到1023的端口被系统占用,用户只能选用大于1023的端口;
  • 传输层的功能,就是建立"端口到端口"的通信,相比之下,"网络层"的功能是建立"主机到主机"的通信,只要确定主机和端口,我们就能实现程序之间的交流,因此,Unix系统就把主机+端口,叫做"套接字"(socket),有了它我们就可以进行网络应用程序开发了;
  • UDP协议:在传输层需要往数据包中添加端口信息,那么需要定义新的协议,这里就引入了UDP协议
  • UDP数据包,标头包含发出端口与接收端口信息,数据部分直接放入IP数据包中,格式如下所示:
image.png
  • TCP协议:UDP协议的优点是比较简单,容易实现,但是缺点是可靠性较差,一旦数据包发出,无法知道对方是否收到,为了解决这个问题,提高网络可靠性,TCP协议就诞生了,这个协议非常复杂,但可以近似认为,它就是有确认机制的UDP协议,每发出一个数据包都要求确认,如果有一个数据包遗失,就收不到确认,发出方就知道有必要重发这个数据包了,因此TCP协议能够确保数据不会遗失,它的缺点是过程复杂、实现困难、消耗较多的资源;
应用层
  • 应用程序收到"传输层"的数据,接下来就要进行解读,由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则根本无法解读;
  • 应用层的作用,就是规定应用程序的数据格式
  • 应用层接收到数据格式如下所示:
image.png
电脑联接网络的设置
  • 主要分为下列四个重要步骤:
    • 设置本机的IP地址;
    • 设置子网掩码;
    • 设置网关的IP地址;
    • 设置DNS的IP地址;
  • 上述的详细情形如下图所示:
image.png
  • 当我们在浏览器中输入网址http://www.google.com/,按下enter键,就会向谷歌服务器发送一个网页请求的数据包,底层的详细执行逻辑如下:
  • 首先,我们发送数据包,必须要知道对方的IP地址,但现在我们只知道谷歌的网址,需要借助DNS服务器,帮助我们将http://www.google.com/``解析成IP地址
  • 其次,现在我们知道了谷歌的IP地址,根据子网掩码,判断我们当前所处的网络是否与谷歌所处的网络相同,若相同,直接获取得到谷歌的Mac地址,若不同转发给网关处理,网关可以帮助我们获取得到谷歌的Mac地址;
  • 一般情况下,浏览器发送网页数据包采用的是HTTP协议,当前处于应用层
  • 进入传输层,获取谷歌的HTTP的端口(默认为80),将HTTP数据包,包装上TCP标头;
  • 进入网络层,获取谷歌的IP地址,将TCP数据包,包装上IP标头;
  • 进入链接层,获取谷歌的Mac地址,将IP数据包,包装上以太协议标头;
  • 最后进入物理层,经过网线,网关,传递给谷歌服务器;
  • 谷歌服务器拿到传输过来的以太数据包,会进行解析操作,依次转换成IP数据包,TCP数据包,HTTP数据包,得到HTTP网络请求数据,然后对其作出响应,响应过程的数据传输与上述的发送请求的流程完全相同;
TCP协议
  • 客户端发送请求到服务端,服务端接收请求并作出响应,此过程中会涉及到TCP的三次握手,下面我们来阐述TCP三次握手机制;
  • TCP的三次握手,主要是为了确认双方的身份和通信能力,然后建立联接,下面以一个实例来形象的论述;
  • 一天清晨,下了大雾,李四走在前面,张三走在后面,双方互相看不清对方,这时张三听见前面有人在走路,不知道是不是李四,于是张三第一次喊话前面的是不是李四啊?,李四听到之后,立马回复到我是李四,并询问道你是不是张三啊?,这时张三听到李四的回复,知道了前面的是李四,然后回复李四的问话,我是张三,这时双方都确认了对方的身份和通信能力,张三的发问李四的回复与发问张三的回复 就相当于TCP中的三次握手;
  • TCP的三次握手之后,客户端与服务端建立联接,就开始进行数据传输了;
    • 第一次握手:客户端向服务端发送数据;
    • 第二次握手:服务端确认客户端发送的数据,并回复数据;
    • 第三次握手:客户端收到服务端的数据,并回复服务端;
  • TCP的四次挥手,是为了断开客户端与服务端之间的联接,终止数据的传输;
  • 还是以上面的实例进行论述,张三李四建立联接之后,在路上一起走了一段距离,当到了路口时,两人要分道扬镳了,首先张三说到我要走了,然后李四回复到好的,再者李四说到我也走了,最后张三回复到好的,双方的四次会话后,各奔东西,这四次会话相当于TCP中客户端与服务端之间的四次挥手;
    • 第一次挥手:客户端向服务端发起断开联接的请求;
    • 第二次挥手:服务端确认客户端的断开联接请求;
    • 第三次挥手:服务端向客户端的发起断开联接请求
    • 第四次挥手:客户端确认服务端的断开联接请求;
  • 经过四次挥手,TCP联接断开关闭;
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容