首页 > 代码库 > 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。
3,TCP三次握手以及四次握手
我们首先定义两个节点: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地址,DNS的IP地址以及目标网址的顶级域名。
1,通过ipconfig或者网络面板查询本机IP,子网掩码,网关,DNS。
2,打开浏览器,输入目标网址。
3,通过全球13台根服务器,顶级域名服务器,COM域服务器解析网址域名获取网址对应的IP(整个过程包括迭代算法,递归算法)。
4,将程序要传递的数据封装为数据包
5,按照TCP协议封装数据包。
6,按照IP协议封装数据包
7,按照以太网协议封装数据包
8,服务器端回应数据请求,执行操作,完成网络通信。
整个过程可以理解为A用户从应用层开始自上而下将数据传输到B,B则从物理层开始自下而上解析传来的数据包,逐步解析,最终实现对A用户请求的响应。
2017-05-22
15:33:13
Python第三堂课(网络篇)