python 全栈 day03 计算机网络基础

一、网络协议

网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合。它规定了通信时信息必须采用的格式和这些格式的意义。

网络协议就是计算机之间进行通信的规则。为了使处于不同地点、装有不同操作系统的计算机之间可以在网络上实现有效地通信,而确立的一种为各类计算机都能认可的通信方法,任一方所表达的信息均能被其他各方所认同,从而确定的计算机接入internet通信的标准。

二、OSI五层协议

互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层,其中对应关系如图。

TCP/IP五层模型是将OSI七层种的应用层,表示层,会话层并作应用层,从TCP/IP五层协议的角度来阐述每层的由来和功能。用户接触的都是应用层,网络数据传输,自上而下每层都依赖于下一层,每层都有自己特定的协议。越往上越靠近用户,越往下越靠近硬件。

(1)物理层

利用物理物理线路实现组网,传输高低电平(电信号)高为1,低为0。

(2)数据链路层

定义了电信号的分组形式,形成一套统一的标准,以太网internet协议。

一组电信号构成了一组数据包及帧,一组数据帧(数据包)分为报头head和数据部分data。

head包含:源地址,目标地址,数据类型

data 包含:数据内容。

协议规定所有接入互联网的计算机都必须有要网卡,head中包含的源地址和目标地址就是指的网卡的地址,每块网卡上都有一个固定的不可改变的MAC地址。有了这些东西,同一网络内的主机就能通过广播的形式传输数据。

(3)网络层

不同网络上的设备要想通信,仅仅靠数据广播是不行的,此时就引入一套新的地址用来区分不同的广播域/子网,采取路由的方式广播发送数据包。

为了实现不同网络间设备的通信,每个设备都会配置IP地址,子网掩码,网关。通过IP地址和子网掩码来判断时候在同一网络。若不再同一网络,通过网关通信,走路由协议网关之间先建立通信,再进行数据传输。

注意:若通信,IP及子网都必须有;跨子网通信依赖IP地址,同子网通信依赖MAC地址。

(4)传输层

通过TCP或是UDP协议,建立端口到端口之间的通信

(5)应用层

应用程序都工作在应用层,应用层就是用于规范应用层的数据格式。传输层的TCP协议为程序传递数据,而数据的类型格式就需要应用层的协议来规定,这写协议就构成了应用层。

开发应用得调用,使用传输层的TCP/UDP协议,为方便使用,我们利用socket通信,它将复杂的TCP协议伪装成接口去调用,方便快捷。

若想实现网络通信,每天主机的四要素必不可少,分别为:IP地址,子网掩码,网关,DNS。这四要素可以通过DHCP协议自动获取,也可以自己动手配置。

三、用户上网流程

1、本机获取有效的IP地址,子网掩码,网关,DNS。

2、打开浏览器,在地址栏输入 www.baidu.com

3、域名解析(及DNS解析)

(1)、操作系统先检查自己本地的hosts文件是否有这个网址的映射关系,如果有,就调用这个IP地址映射,完成域名解析。

(2)、如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存中是否有这个网址的映射,如果有直接将数据返回,完成域名解析。

(3)、如果hosts与本地DNS解析器缓存都没有相对应的网址映射关系,首先会找本地DNS服务器去查询,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。

(4)、如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是那个服务器来授权管理,并会返回一个负责该顶级域名服务器的一个IP地址。本地DNS服务器收到IP地址信息后,将会联系负责.com域的这台服务器。当这台负责.com域的服务器收到请求后,如果自己无法实现解析,它就会找一个管理.com域的下一级DNS服务器地址(baidu.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找baidu.com的域服务器,重复上面3,2,1动作进行查询,直至找到www.baidu.com主机。

(5)、将数据嵌入TCP数据包中返回。

4、TCP协议

TCP协议在数据包中外部嵌入http协议的端口,发送给网络层

5、IP协议

网络层接收到TCP协议数据包之后,会在外部嵌入一层IP数据包(源IP地址,目标IP地址)发送给数据链路层。

6、internet协议

IP数据包到达数据链路层,将被打上一层以太网数据包(源MAC地址,目标MAC地址,数据类型)。数据包封装完成后,通过物理层发给baidu服务器。

7、服务器响应

服务器经网络接收到数据包之后,分析数据包里客户的打开网址的请求,做出回应,再将响应以相同的方式发回请求主机。

8、本机收到从服务器返回的响应数据包之后,浏览器将网页打开,完成通信。

时间: 2024-08-10 19:18:13

python 全栈 day03 计算机网络基础的相关文章

python 全栈 day03 计算机网络基础 -- 摘要

一.网络协议 网络协议是计算机网络中进行数据交换而建立的规则.标准或约定的集合.它规定了通信时信息必须采用的格式和这些格式的意义. 网络协议就是计算机之间进行通信的规则.为了使处于不同地点.装有不同操作系统的计算机之间可以在网络上实现有效地通信,而确立的一种为各类计算机都能认可的通信方法,任一方所表达的信息均能被其他各方所认同,从而确定的计算机接入internet通信的标准. 二.OSI五层协议 互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层,其中对应关系如图. TCP

Python全栈开发【基础三】

Python全栈开发[基础三]  本节内容: 函数(全局与局部变量) 递归 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 1 def 函数名(参数): 2 3 ... 4 函数体 5 ... 6 返回值 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算 参数:为函数体提供数据 返回值:当函数执行完毕后,可以给调用者返回数据. 总结使用函数的好处: 1.减少代码重用 2.保持一致性,易维护

Python全栈开发【基础二】

Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 编码与进制转换 Python 运算符 1.算术运算: 2.比较运算: 3.赋值运算: 4.逻辑运算:  5.成员运算: 基本数据类型 1.数字 int(整型) 1 class int(object): 2 """ 3 int(x=0) -> integer 4 int(x, base=10) -&g

Python全栈开发【基础四】

Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 匿名函数 lambda表达式:对于简单的函数,存在一种简便的表示方式,即lambda表达式 1 #这段代码 2 def calc(n): 3 return n**n 4 print(calc(10)) 5 6 #换成匿名函数 7 calc = lambda n:n**n 8 print(calc(10)) 匿名函数主要是和其它函数搭配使用 举例: 1 ########

Python全栈-Day03

心灵鸡汤 做任何事情,首先要敢想,然后脚踏实地,找准方向. 先积淀,再沉淀 01-Python历史.32bit和64bit区别.系统运行机制浅析 第一.CPU要求不同--由于CPU分别有32位和64位,32位的CPU只支持安装32位系统,而64位的CPU可以同时支持32位系统以及64位系统. 第二.运算速度不同--64位CPU的指令集支持运行64位数据指令,相对来说64位系统比32位系统运行速度快2倍(理论上). 第三.寻址能力不同--windows 32位操作系统最多能够支持4G内存:而64位

python全栈 day03 操作系统

一.操作系统 为了实现实现功能,提高效率,充分高效的管理并加以优化使用计算机硬件,方便用户使用,计算机就在其硬件的基础上安装了一层软件,及操作系统.操作系统的任务就是又好又快,方便快捷的管理所有设备. 操作系统将繁琐的,所有用来操作硬件的调用程序操作起来,并加以优化使用硬件这种极其繁琐的工作,彻底的解放了使用者,提高了工作效率,使用者就能通过编写使用操作系统来实现间接调用硬件工作的软件,就不用再去考虑把所有硬件操作细节都兼顾到,高效快捷的实现功能.同时操作系统是由硬件保护的,不可由用户更改的,稳

python全栈 day03 操作系统 -- 摘要

一.操作系统 为了实现实现功能,提高效率,充分高效的管理并加以优化使用计算机硬件,方便用户使用,计算机就在其硬件的基础上安装了一层软件,及操作系统.操作系统的任务就是又好又快,方便快捷的管理所有设备. 操作系统将繁琐的,所有用来操作硬件的调用程序操作起来,并加以优化使用硬件这种极其繁琐的工作,彻底的解放了使用者,提高了工作效率,使用者就能通过编写使用操作系统来实现间接调用硬件工作的软件,就不用再去考虑把所有硬件操作细节都兼顾到,高效快捷的实现功能.同时操作系统是由硬件保护的,不可由用户更改的,稳

Python全栈开发——01基础

#!/usr/bin/env python 可声明liunx所使用的python解释器(特有) 编码 #-*- coding:utf-8 -*- python2有中文时要加的编码 在头文件加 ,Python3不用使用,默认为utf-8(也可写成utf8) python语法 #变量名   1.字母   2.数字   3.下划线 #永远等待,直到用户输入值,n代指用户输入的值 n=input('请输入用户名:') #条件语句 if 条件: 语句块 elif 条件: 语句块 else: 语句块 #假如

Python全栈开发之基础语法

No1. Python语言介绍 详情见百度百科... No.2 Python是一门怎么样的语言 详情在百度百科... No3. Python能做什么 网络应用.桌面应用.系统运维.机器学习.科学计算... 网络应用 Django/Flask/Tornado 桌面应用 PyQt/PySide/wxPython/PyGTK 系统运维 psutil/IPy/dnspython/difflib 机器学习 Scikit-Learn/Statsmodels/PyMC/Shogun 科学计算 NumPy/Sc