Day3: Python学习笔记之计算机基础——网络片

Day3: Python学习笔记之计算机基础——网络片

什么是互联网协议以及为何要有互联网协议?

?互联网协议本质上是为了方便连接两台计算机而指定的一系列统一的标准。

osi五层模型

计算机之间要实现数据传输必须要经过以下五层协议:


? 模型 ,协议 ,硬件


? 应用层, http协议、用户自定义协议

? 传输层, TCP/UPD协议 ,四层交换机、四层路由器

? 网络层, IP协议, 三层交换机、路由器

? 数据链路层, 以太网、电信号分组, 网桥、以太网交换机、网卡

? 物理层, 传递电信号 ,中继器、集线器、双绞线


用户感知到的只是上面一层应用层,自上而下每一层都依赖于下一层

物理层

主要是基于电器特性发送高低电压(电信号),高电压对应1,低电压对应0。

数据层

数据层对电信号定义了统一的分组方式,即以太网协议(ethernet)然后通过广播进行传输。

  1. 以太网协议:

    • 一组电信号构成一个数据包,叫做‘帧‘
    • 每一数据帧分成:报头head和数据data两部分
    • head包含(固定18个字节):发送者/源地址(6个字节) + 接收者/目标地址(6个字节) + 数据类型(6个字节)
    • data包含(最短46字节,最长1500字节):数据包的具体内容
    • head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送
  2. mac地址:每块网卡出厂时都被烧制上一个世界唯一的mac地址,就是head中包含的源和目标地址。
  3. 广播:有了mac地址,同一网络内的两台主机就可以通信了(一台主机通过arp协议获取另外一台主机的mac地址)ethernet采用最原始的广播的方式,即计算机通信基本靠吼

数据:head + data

网络层:

有了ethernet、mac地址、广播的发送方式,世界上的计算机就可以彼此通信了,但是世界范围的互联网是由一个个彼此隔离的小的局域网组成的,网络层引入一套新的地址用来区分不同的广播域/子网,这套地址即网络地址。

  1. IP协议:

    • 规定网络地址的协议叫ip协议,它定义的地址称之为ip地址,广泛采用的v4版本即ipv4,它规定网络地址由32位2进制表示
    • 范围0.0.0.0-255.255.255.255
    • 一个ip地址通常写成四段十进制数,例:172.16.10.1
  2. ip地址组成
    • 网络部分:标识子网
    • 主机部分:标识主机

    注意:单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法辨识一个ip所处的子网例:172.16.10.1与172.16.10.2并不能确定二者处于同一子网

  3. 子网掩码(DNS)

    所谓”子网掩码”,就是表示子网络特征的一个参数,它在形式上等同于IP地址。通过”子网掩码”就能判断任意两个IP地址是否处在同一个子网络。方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。

  4. ip数据包

    ip数据包也分为head和data部分,无须为ip包定义单独的栏位,直接放入以太网包的data部分

    head:长度为20到60字节

    data:最长为65,515字节。

    而以太网数据包的”数据”部分,最长只有1500字节。因此,如果IP数据包超过了1500字节,它就需要分割成几个以太网数据包,分开发送了。

    以太网头——ip头——ip数据

  5. ARP协议:通过IP + DNS 获取mac地址

数据:以太网头 + IP头 + IP数据

传输层

网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,为了标识这台主机上的应用程序,产生了端口,即应用程序与网卡关联的编号,而传输层就是建立端口到端口的通信。

  1. tcp协议

    • 可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割。
    • 以太网头 + IP头 + TCP头 + 数据
    • TCP三次握手和四次挥手
  2. udp协议:

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

    以太网头 + IP头 + upd头 + 数据

应用层

用户使用的都是应用程序,均工作于应用层,互联网是开发的,大家都可以开发自己的应用程序,数据多种多样,必须规定好数据的组织形式

  1. 应用层功能:规定应用程序的数据格式。
  2. TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。

用户上网流程

  • 本机的IP地址:192.168.1.100
  • 子网掩码:255.255.255.0
  • 网关的IP地址:192.168.1.1
  • DNS的IP地址:8.8.8.8

用户数据→http、自定义→TCP、端口→IP→以太网→电信号传输

接收后在反向得到数据

时间: 2024-12-26 20:12:28

Day3: Python学习笔记之计算机基础——网络片的相关文章

Python学习第一天----计算机基础

一.学习计算机基础的目的 再高级的编程语言都是运行在操作系统之上的,而操作系统又是运行在硬件基础之上.所以在开始学习编程之前需要深刻的了解并熟知计算机的基础知识.包括硬件基础及操作系统基础. 二.计算机硬件发展史 计算机的定义:是现代用于高速计算的一种电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能. 发展史: 原型或者说灵感起源于中国 1946年2月14日情人节这天,世界上第一台电子计算机"电子数字积分计算机ENIAC"在美国宾夕法尼亚大学问世. 电子管时代--

Python学习笔记day1【基础介绍】

Alex博客:http://www.cnblogs.com/alex3714/articles/5465198.html 一.本节主要内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc文件 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 二.具体内容 1.python介绍 python的创始人为吉多·范罗苏姆(Guid

python学习笔记day8【socket网络编程】

内容大纲 1.socke基础 两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. 建 立网络通信连接至少要一对端口号(socket).socket本质是编程接口(API),对TCP/IP(或者UDP)的封装,TCP/IP也要提供可供程序员做网络 开发所用的接口,这就是Socket编程接口:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后

Python 学习笔记 - 面向对象(基础)

之前学习的编程方式都是通过面向过程来实现的,对于一些重用的代码,进一步的使用了函数,增强了代码的可读性和重用性.Python同时还支持面向对象的编程. 面向对象有三大特性: 封装 继承 多态 首先来看看封装.封装包括两点,把内容封装到某个地方:调用封装的内容 例1: class c1:     def __init__(self,name,obj):         self.name = name         self.obj = obj class c2:     def __init_

第二周 day3 python学习笔记

1.字符串str类型,不支持修改. 2.关于集合的学习: (1)将列表转成集合set:集合(set)是无序的,集合中不会出现重复元素--互不相同 (2)集合的操作:交集,并集.差集.对称差集.父集.子集.增加.删除.求长度,但是不允许修改 3.文件操作 (1)对文件操作的流程: >>1.打开文件,得到文件句柄并赋值给一个变量 >>2.通过句柄对文件进行操作 >>3.关闭文件 #文件操作f=open("B:/Python/PycharmCode/pyDay2/t

python学习笔记4:基础(集合,collection系列,深浅拷贝)

转载至:http://www.cnblogs.com/liu-yao/p/5146505.html 一.集合 1.集合(set): 把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(set elements):组成集合的成员 python的set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交), difference(差)和sysmmetric difference(对称差集)

Python学习笔记1(基础语法)

1.Python的文件类型: 源代码:扩展名以py结尾.python写的程序不需要编译成二进制代码,可以直接运行.pyw是Windows下开发图形界面的源文件. 字节代码:扩展名以pyc结尾,是编译过的字节文件,不能使用文本编辑工具打开或者修改. 优化代码:扩展名以pyo结尾,是优化过的源文件,需要用命令行工具生成.下面把hello.py编译成hello.pyo. python -O -m py_compile hello.py PS: 参数-O表示生成优化代码,-m表示吧导入的py_compi

python学习笔记3:基础(元组、字符串、列表、字典)

参考文档:http://www.cnblogs.com/liu-yao/p/5145876.html 一,对象与类 对象: python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,玩的手机就是对象. 我们通过描述属性(特征)和行为来描述一个对象的. 在python中,一个对象的特征也称为属性(attribute).它所具有的行为也称为方法(method) 结论:对象=属性+方法 在python中,把具有相同属性和方法的对象归为一个类(class) 比如人类,动物,植物等等,

python学习笔记2:基础(邮件发送)

参考文档:http://www.runoob.com/python/python-email.html SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. python的smtplib提供了一种很方便的途径发送电子邮件.它对smtp协议进行了简单的封装. Python创建 SMTP 对象语法如下: import smtplib smtpObj = smtplib.SMTP( [host