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

时间: 2024-11-13 08:04:16

Python第三堂课(网络篇)的相关文章

Python第5堂课(linux系统之用户群组权限篇)

作业一: 1) 新建用户natasha,uid为1000,gid为555,备注信息为"master" 2) 修改natasha用户的家目录为/Natasha 3) 查看用户信息配置文件的最后一行 4) 为natasha用户设置密码"123" 5) 查看用户密码配置文件的最后一行 6) 将natasha用户账户锁定 7) 将natasha用户账户解锁 8) 新建组police,gid为999 9) 查看组配置文件的最后一行 10) 将natasha用户加入police

【Python之路Day11】网络篇之线程、进程、协程

目录: 基本概念 线程 进程 协程  一. 基本概念 现在的操作系统,如Unix.Linux.Windows.Mac OS X等,都是支持“多任务”的操作系统. 什么叫”多任务“呢?简单理解,就是我们可以一般上网浏览某车之家的网页,看看喜欢的车型信息:一边打开某易云音乐听听好歌:一边打开某软件股市行情图,不安的盯着曲线图...卧槽,又尼玛跌了!  这就是多任务喽. 多核心的CPU已经很普及了,但是,就是在过去的单核心CPU上,也可以执行多任务. PS: CPU是分时间片的,假设任务1执行0.01

Python的第二堂课(1)

一.编程语言的分类 机器语言:直接使用二进制命令去编写程序. 优点:执行效率高 缺点:开伐效率低 汇编语言:用英文标签代替二进制命令去编写程序 优点:开发效率高于机器语言 缺点:执行效率低于机器语言 高级语言:用人类能理解的表达方式去编写程序,通过操作系统间接地操作硬件,无需考虑硬件细节 编译型:类似于谷歌翻译 解释型:类似于同声传译 执行效率:机器语言>汇编语言>编译型>解释型 开发效率:解释型>编译型>汇编语言>机器语言 跨平台性:解释型>all 二.安装py

JS第三堂课

Javascript(三) 1. 函数 function functionName(arg1,arg2…) { ….. } return语句用法 2. 对象 属性/方法 var aValues=new Array(); var myString=new String(“hello world”); 3. Date对象(var myDate=new Date()) 1) 计算程序执行速度(得到毫秒数)1.html 2) 方法 方法 描述 getFullYear() 返回四位数的年份 getMont

Python第四堂课(LINUX系统指令一)

开启Linux操作系统,要求以root用户登录GNOME图形界面,语言支持选择为汉语 使用su指令  su root 然后根据提示输入密码即可 使用快捷键切换到虚拟终端2,使用普通用户身份登录,查看系统提示符 Ctrl+alt [F1-F6]可以自由切换终端,命令行界面会显示普通维护提示符为$,ROOT用户为# 使用命令退出虚拟终端2上登录的用户 输入EXIT即可 使用快捷键切换到虚拟终端5,使用管理员身份登录,查看系统提示符 此题不再赘述 使用命令退出虚拟终端5上登录的用户 此题不再赘述 切回

复习--3--对于第三堂课的总结--

1.空格  -- --  在HTML文件中是使用键盘的空格键无论打多少个都只会显示一个,如使用全角输入法即输入法自带的长空格,那样不规范容易出错 2.在文本中出现<> <用 &lt: >用&gt: 分号一定要有,为了与标签相区分,安全措施3.引号 &quot: 4.版权 ©? 显示的符号   ---Copyright&copy2007-2015 潭州学院www.tanzhouedu.com 版权所有--- 5.<pre></pre&

SQL Server 第三堂课,学习数据库函数。跟C#语言异曲同工,同样是由输入参数,输出参数,函数体,返回值四要素组成,不同的是语法和写法。掌握知识的关键在与学好C#语言的函数

--存储过程 --定义变量 declare @bianliang int set @bianliang =12 --变量赋值 select @bianliang print @biangliang --定义两个变量求和 declare @bianliang1 int, @bianliang2 int set @bianliang1 =1 --给变量赋值用set set @bianliang2 =2 select @bianliang1+@bianliang2 --创建存储过程 create pr

Python之路第一课Day9--随堂笔记之二(进程、线程、协程篇)

本节内容 进程.与线程区别 python GIL全局解释器锁 线程 语法 join 线程锁之Lock\Rlock\信号量 将线程变为守护进程 Event事件 queue队列 生产者消费者模型 Queue队列 开发一个线程池 进程 语法 进程间通讯 进程池 一.进程与线程 1.线程 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务 A thread is an ex

[网络篇]ESP8266-SDK教程(三)之TCP通信Server&lt;-&gt;Client

纳尼?昨天刚刚打印了个"Hello World!",今天你就让我学习TCP通信?有没有搞错~哈哈,相信很多读者会很迷,其实学习这东西嘛,单单学一些比较简单的,相信没两天就没人看了,所以咱就在基础篇和网络篇穿插着去学习一下ESP8266,毕竟兴趣才是最好的老师嘛!大家以后遇到问题了,来翻文章建议大家根据[XX篇]去快速定位该去哪一篇文章中去查找问题,当然具体会在哪一篇文章中有讲,也不一定了,后面也会穿插着写一点[项目篇][进阶篇][闲扯篇],总的来说就是,本系列文章并没有固定的路线,大家