DAY3 网络协议

来源:互联网 发布:朝鲜没有网络吗 编辑:程序博客网 时间:2024/05/29 10:30

  又到了每课一篇的时间了

1、什么是互联网协议及为何要有互联网协议

    互联网协议本质就是规则,为了实现计算机通过互联网交换数据,而制定的对数据“包装”的制度,互联网其实就是由大量的互联网协议组成。

     在 RFC 791 中对于 IP协议是这样定义的:

     “互联网协议(IP)特指为实现在一个相互连接的网络系统上从一个源到一个目的地传输比特数据包(互联网数据包)所提供必要功能的协议。其中并没有增加端到端数据可靠性机制、流量控制机制、排序机制或者其它在端到端协议常见的功能机制。互联网协议可在其支持的网络上提供相应服务,实现多种类型和品质的服务。”
    假如你就会中文,跟一个就会德语的老外打电话,你俩瓦勒瓦勒半天,估计双方都一脸懵逼,于是现在全球人都学英语。同样对于两台计算机来说想要通过互联网互相传输数据,就必须遵守的规则就是互联网协议,有了互联网协议让计算机之间既找得到又传的开。

2、osi五层模型

  

    互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层,然而老师就主要讲了五层这款。

   如图,用户输送数据由上向下,接受数据又下向上。

   ①物理层

   物理层就是从物理层面联网,你想上网不插网线也得连WIFI吧,让你的计算机加入互联网。物理层的作用就是基于传输设备的高低电压发送信号,高压1、低压0。 

   ②数据链层

    接上文,传输一大堆高低电压,就是大堆110010101010111,完全理解不了是什么,让信号变得有序可被理解就必须规定每组多少信号,每组都是什么意思,于是数据链层的作用就是定义了电信号的分组方式,整个网络协议都是基于这些规则。

    以太网协议

    想当年山头林立,各家规则都不一样,没办法一起玩耍,于是乎就统一使用了一个标准,就是以太网协议ethernet。

     ethernet规定一组电信号组成一个数据包,叫做“帧”;每一数据帧由“报头head”和“数据date”两部分组成,头在前数据在后。

        head由固定的18个字节组成

        发送者/源地址 (6个字节) 

        接收者/目标地址(6个字节)

       数据类型 (6个字节)

        date 最短46字节,最长1500字节储存的数据包具体内容。

         所以,一个数据包最长1518字节,超过了就分片发送。

      mac地址

      那么head里边的源头和目标的地址是哪来的呢?ethernet就规定了想接入internet的设备必须有网卡,发送、接受的地址就是网卡地址,就叫做mac地址。每个mac地址都独一无二,长度为48位2进制,通常由12为16进制数标示。(前六是厂商编号,后六是流水线号)

    广播

    计算机的社会比较原始,交流基本靠吼,A机要是给B机通信,就吼一声B,其他诸如CDEF机并不会搭理他,依靠俩机的mac地址就可以通信了,但是他俩必须在一个同一个网络里,那么在不同的网络里怎么搞,就需要用到网络层。

   ③网络层

    有了ehternet协议、mac地址、广播的方式,世界上每一台连上internet的计算机都可以互相通信了,但是整个互联网是由一个个单独小局域网组成的,如果世界层面传输数据还靠吼,吼遍全世界,不仅是慢,估计会GG。

   所以必须区分出每一台电脑属于哪个小圈子即广播域,如果跟自己在一起就采用广播,如果不是就通过路由的方式(向不同的广播域发数据包),但是mac地址作为一个物理概念的地址是无法区分的,所以必须引入一套新的地址来区分不同的广播域,即网络地址。  

   IP协议

   规定网络地址的协议就叫IP协议,它定义的地址就叫IP地址,广泛采用的是v4版本(ipv4),它规定 ip地址由32位2进制表示,范围0.0.0.0-255.255.255.255,一个IP地址通常写成四段十进制数 ,for example    192.168.1.24

   IP地址分为 网络部分 和 主机部分,前者标示子网,后者表示主机,二者必须一起才能确认是否处于同一个子网。

   子网掩码

   子网掩码就是子网特称参数,形式上等同于IP地址,也是32为二进制,网络部分全为1,主机部分全为0。比如网络部分是前24位,主机部分是后8位,就是 11111111,11111111,11111111,0000000,转成十进制就是255.255.255.0

    有了子网掩码,就能判断两个IP是否在同一个网络,将IP地址与子网掩码AND计算(两个数为都是1,结果是1,其他都为0),然后比较结果,如果相同就是同一个子网络。

   IP协议的用途就是:1、为每一个计算机分配IP地址;2、确定哪些地址在同一个子网络。

   IP数据包

   IP数据包也是又 head data两部分组成,无须为IP包定义单独的栏位,直接放入以太网包的DATA部分。

  head 长度20到60字节

   data 最长为65515字节

   但是以太网数据包DATA部分最长只能1500字节,如果超过了,就分成几个以太网数据包分开发送。

   ④传输层

   网络层区别子网,数据链层的MAC地址帮我们找到主机,然而计算机上的应用程序之间如何确定数据传输呢?就是端口,端口就是应用程序与网卡关联的编号。端口范围0-65535,0-1023为系统占用端口。

    传输层的作用就是建立端口到端口的通信。

     端口通信一般有TCP协议跟UDP协议。

     TCP协议:

      可靠的传输,TCP的数据包没有长度限制,但一般为了保证网络效率,通常长度不超过IP数据包的长度,确保单个TCP数据包不必再分割。

      以太网头 IP头 TCP头 数据。

      UDP协议:

     不可靠的传输,报头部分只有8个字节,总长度不超过65535字节,正好放进一个IP数据包。

    以太网头 IP头 UDP头  数据

     下边是我用通俗易懂来说下TCP协议

      A B之间要传数据,A向B发个信息 X,如果B同意了,就回个X+1(确保接受方是B,不是CDEFG),并同时向A发个Y;A收到B发来的两条信息,再向B发出Y+1(确保对接收方是A,不是路人)。当A传输完数据之后,只可单方面结束A传出,不能结束B的传出数据拔网线不算。从而确保传输数据的完整,是可靠的。

    

    ⑤应用层

     我们用的应用程序都工作于应用层,互联网是开放的,每个人都可以开发自己的应用,为了可以互相通信,必须规定好数据的组织形式。所以应用层的作用就是 规定应用程序的数据格式。

    

     3、用户上网流程

    1、首先需要一台能上网的计算机。

    2、打开浏览器,输入想要访问的网址,比如WWW.QQ.COM

    3、首先看本地缓存有没有WWW.QQ.COM的记录,如果没有,联系根服务器,询问对应的IP地址。

    4、根服务器返回信息应该访问.COM域管理服务器,询问IP地址。

    5、QQ.COM域服务器查询后告诉计算机对面的IP地址是1.1.1.1。

    6、将1.1.1.1写入缓存并访问1.1.1.1。

    7、将所要的HTTP数据嵌入TCP数据包中→TCP数据包设置接收方和发送方端口→再将TCP数据包嵌入IP数据包,设置双方IP地址→IP数据包嵌入以太网数据包,设置双方MAC地址→转化为电信号传输→经过多个网关的转发,QQ的服务器1.1.1.1接收到了以太网数据包→以太网数据包取出IP数据包,再从中取出TCP数据包,从中读出HTTP请求,接着作出HTTP相应,再用TCP协议发回来,本机接到HTTP相应后,就可以将网页显示出来,完成一次上网。