首页 > 代码库 > Python第三堂课(网络篇)

Python第三堂课(网络篇)

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

1.1互联网协议就是一系列的网络协议,包括TCP/IP/Ethernet等协议,以上诸层一起构成网络中两个节点的通信标准。

 

1.2而其存在的意义就是定义计算机如何接入internet,以及接入internet的计算机通信的标准。


2.osi五层模型 

 

从上往下依次是

 

①应  用  层:规定应用程序的数据格式(不同程序不同标准,实现应用区分)

 

②传  输  层:在通过数据链路层和网络层寻找到目标主机后,为了实现软件层

              面的通信,传输层建立端口到端口的通信,从而在应用层面上实

              现通信。(端口范围0-65535,其中0-1023为系统端口)

              传输层有两种传输协议:1,TCP协议(可靠传输)

                                    2,UDP协议(不可靠传输)

       

 

③网  络  层:有了ethernet,MAC地址,广播的发送方式,我们理论上可以建

              立任何两台计算机之间的通信。但是这会造成数据爆炸的灾难。

              而网络层就是引入一套新的地址来区分不同的广播域/子网,这

              套地址就是网络地址。规定这套新的网络地址的是IP协议,通

              常由32位2进制数来表示同时为了区分不同的子网,还引入了

              子网掩码的概念(32位2进 制数)。我们可以通过将IP与子

              网掩码进行AND运算,对两个IP进行结果比对就可以知道是不

              是存在同一个子网中,如果存在,就可以通过Ethernet协议进

              行广播寻址实现通信。

{所以IP有两个作用:1,为每一台计算机分配IP地址

                     2,确定哪些地址存在同一个子网内}

             同时IP数据包也分为两个部分:报头(20-60字节)和数据部分            

            (最多65515字节)

             另外,网络中的任意两个节点在互知IP的情况下,通过ARP方式

             寻找对方的MAC地址,这样我们就实现了通过了指定IP获取目标

             MAC地址的目的。具体格式如下:

             

 

源MAC

目标MAC

源IP

目标IP

数据部分

发送端主机

发送端MAC

FF:FF:FF:FF:FF:FF

...

...

数据

 

             

           

 

④数据链路层:定义电信号的分组方式。

            比如Ethernet协议,把一组电信号定义为“帧”。

            一帧由报头和数据部分组成,报头包括收发MAC地址(各占6个字  

            节)以及定义数据 类型(6字节)共计18字节  ;数据部分最短

            46字节,最长为1500字节  。

            MAC通信方式为广播寻址,通过在同一个子网内广播目标MAC地址

            建立通信

 

⑤物  理  层:主要是基于电器特性发送高低电压(电信号),高电压对应数字

              1,低电压对应数字0。

 

 

3TCP三次握手以及四次握手

我们首先定义两个节点:Client定义为客户端(简称C),Server定义为服务端 (简称S) 。

3.1三次握手建立连接  

①C——》SYN=1(请求建立连接),seq=x(特定序列号,请求通过)——》S

 

②S——》ACK=x+1(确认序列号),seq=y(特定序列号,请求建立连接)——》C

 

③C——》seq=y+1(确认序列号,建立连接)——》S  

 

3.2四次握手通讯结束  

①C——》FIN=1(请求结束),seq=x+2,ACK=y+1——》S

 

②S——》ACK=x+3(请求确认,同意结束通信)——》C【此时C-S通道关闭】

 

③S——》FIN=1(请求结束),seq=y+1——》C

 

④C——》seq=y+2(请求确认,同意结束通信)——》S【此时S-C通道关闭】

 

四次握手是为了避免数据传输尚未完成时通道中断,造成数据的不完整。

 

4,用户上网流程

以用户登录某网址为例,已知本机的IP地址,子网掩码,网关的IP地址,DNSIP地址以及目标网址的顶级域名。

1,通过ipconfig或者网络面板查询本机IP,子网掩码,网关,DNS

 

2,打开浏览器,输入目标网址。

 

3,通过全球13台根服务器,顶级域名服务器,COM域服务器解析网址域名获取网址对应的IP(整个过程包括迭代算法,递归算法)。

 

4,将程序要传递的数据封装为数据包

 

5,按照TCP协议封装数据包。

 

6,按照IP协议封装数据包

 

7,按照以太网协议封装数据包

 

8,服务器端回应数据请求,执行操作,完成网络通信。

 

整个过程可以理解为A用户从应用层开始自上而下将数据传输到BB则从物理层开始自下而上解析传来的数据包,逐步解析,最终实现对A用户请求的响应。

 

 

2017-05-22

15:33:13

 

 

 

                

Python第三堂课(网络篇)