热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python学习之旅-3

网络基础学习ip地址基础知识1.1ip地址的结构和分类…根据tcp/ip协议,连接在internet上的每个设备都必须有一个ip地址,他是一个32位二进制数,也可以用点分十进制表示,

网络基础学习

ip地址基础知识

1.1 ip地址的结构和分类
…根据tcp/ip协议,连接在internet上的每个设备都必须有一个ip地址,他是一个32位二进制数,也可以用点分十进制表示,每八位一组,用一个十进制表示即0~255,每组用”.”分隔开,例如172.16.45.10
…ip地址表示
这里写图片描述
…将ip地址中的网络位和主机位固定下来后,ip地址被分成了不同的积累:A类,B类,C类,D类,E类
这里写图片描述
这里写图片描述
1.2 特殊ip地址
  • 1.网络地址:用于表示网络本身,具有正常的网络号部分,而主机号部分全部为0的ip地址称之为网络地址,如172.16.45.0就是一个B类网络地址
  • 2.广播地址:用于向网络中的所有的设备进行广播。具有正常的网络号部分,而主机号部分全为1(即255)的ip地址称之为广播地址,如172.16.45.255就是一个B类的网络地址
  • 3.有限广播地址:指的是32位全位1(即255.255.255.255)的ip地址,用于本网广播
  • 4.回送地址:网络地址不能以十进制的127作为开头,在地址中数字127保留给系统作为诊断用,称为欢送地址,如127.0.0.1用于回路测试
  • 5.私有地址:只能在局域网内使用,不能在internet上使用的ip地址称为私有ip地址,私有ip地址有:
    1. 10.0.0.0~10.255.255.255,表示一个A类地址
    2. 172.16.0.0~172.31.255.255,表示16个B类地址
    3. 192.168.0.0~192.168.255.255,表示256个C类地址
  • 6.IP地址0.0.0.0:指已经不是真正意义上的ip地址,它表示的是所有不清楚主机和目的网络,这里的不清楚指的是在本机路由表里没有特定条目指明如何到达
1.3 子网掩码
  • 1.子网掩码用于识别ip地址中的网络地址和主机地址。
  • 2.子网掩码也是32位二进制数字,在子网掩码中,对应于网络地址部分全用1表示,主机部分全用0表示
  • 3.还可以用网络前缀表示子网掩码,即”/<网络地址位数>”,如172.16.45.0/24表示B类网络172.16.45.0的子网掩码为255.255.255.0
    这里写图片描述
1.4 ip地址申请
https://www.processon.com/mindmap/57fdad47e4b08d4fe9b3d7e2

子网划分

2.1 子网划分概念
子网划分是通过借用ip地址的若干位主机位来充当子网地址的从而将原来的网络分为若干个彼此隔离的子网实现的
这里写图片描述
注意:
•arp协议通过ip地址获取目标主机的mac地址这一过程使用的是广播的方式,这个广播地址就是通过子网地址于子网掩码计算而来的,只有计算出的这一子网内的主机才能收到这个arp广播包
•子网划分与vlan都可以做到隔离广播域,只是子网划分是三层隔离,二vlan是二层
这里写图片描述
2.2 c类子网划分初探
这里写图片描述
2.3 子网划分步骤
•确定要划分的子网数以及每个子网的主机数
•求出子网数目对应的二进制的位数N及主机数目对应的二进制数的位数M
•对该ip地址的原子网掩码,将其主机地址部分的前N位置1(其余全部置0)或后M位置0(其余全置1)即得出该ip地址划分子网后的子网掩码
2.4 子网划分案例
给C类网络211.168.10.0划分5个子网
2**2-2<5<2**3-2所以需要3位网络号,主机号为8-3=5
子网掩码为255.255.255.224
每个子网可容纳2**5-2=30台主机
这里写图片描述
2.5 划分子网注意事项

Internet组织机构定义了五种IP地址,用于主机的有A、B、C三类地址。其中A类网络有126个,每个A类网络可能有16,777,214台主机,它们处于同一广播域。而在同一广播域中有这么多结点是不可能的,网络会因为广播通信而饱和,结果造成16,777,214个地址大部分没有分配出去,形成了浪费。而另一方面,随着互连网应用的不断扩大,IP地址资源越来越少。为了实现更小的广播域并更好地利用主机地址中的每一位,可以把基于类的IP网络进一步分成更小的网络,每个子网由路由器界定并分配一个新的子网网络地址,子网地址是借用基于类的网络地址的主机部分创建的。划分子网后,通过使用掩码,把子网隐藏起来,使得从外部看网络没有变化,这就是子网掩码。
很简单的说 就是,一个公司不可能使用254个公网地址,A公司想用6个地址,B公司也想用6个地址,如果把这两个公司的地址都放在一个大网段里面,这两个公司的地址就能够直接互通
子网划分优点:
•减少网络流量
•提高网络性能
•简化管理
•易于扩大地理范围

网络协议

TCP/IP协议
有关于TCP/IP协议的内容可以查看转载的这篇博客:
http://blog.csdn.net/z5622139/article/details/72626449
Socket
我们知道两个进程如果需要进行通讯最基本的一个前提能能够唯一的标示一个进程,在本地进程通讯中我们可以使用PID来唯一标示一个进程,但PID只在本地唯一,网络中的两个进程PID冲突几率很大,这时候我们需要另辟它径了,我们知道IP层的ip地址可以唯一标示主机,而TCP层协议和端口号可以唯一标示主机的一个进程,这样我们可以利用ip地址+协议+端口号唯一标示网络中的一个进程。
能够唯一标示网络中的进程后,它们就可以利用socket进行通信了,什么是socket呢?我们经常把socket翻译为套接字,socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。
这里写图片描述
网络通信实现

想实现网络通信,每台主机需具备四要素

  • 本机的IP地址
  • 子网掩码
  • 网关的IP地址
  • DNS的IP地址
获取这四要素分两种方式
  • 静态获取
    即手动配置
  • 动态获取
    通过dhcp获取
    以太网头 –>ip头 –>udp头 –>dhcp数据包
    (1)最前面的”以太网标头”,设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。
    (2)后面的”IP标头”,设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。
    (3)最后的”UDP标头”,设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。
    这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。因为接收方的MAC地址是FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的IP地址,才能确定是不是发给自己的。当看到发出方IP地址是0.0.0.0,接收方是255.255.255.255,于是DHCP服务器知道”这个包是发给我的”,而其他计算机就可以丢弃这个包。
    接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个”DHCP响应”数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分。
    新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数
网络通信流程
  • 1.本机获取

    • 本机的IP地址:192.168.1.100
    • 子网掩码:255.255.255.0
    • 网关的IP地址:192.168.1.1
    • DNS的IP地址:8.8.8.8
  • 2.打开浏览器,想要访问Google,在地址栏输入了网址:www.google.com。
  • 3.dns协议(基于udp协议)
    这里写图片描述
    13台根dns:
    A.root-servers.net198.41.0.4美国
    B.root-servers.net192.228.79.201美国(另支持IPv6)
    C.root-servers.net192.33.4.12法国
    D.root-servers.net128.8.10.90美国
    E.root-servers.net192.203.230.10美国
    F.root-servers.net192.5.5.241美国(另支持IPv6)
    G.root-servers.net192.112.36.4美国
    H.root-servers.net128.63.2.53美国(另支持IPv6)
    I.root-servers.net192.36.148.17瑞典
    J.root-servers.net192.58.128.30美国
    K.root-servers.net193.0.14.129英国(另支持IPv6)
    L.root-servers.net198.32.64.12美国
    M.root-servers.net202.12.27.33日本(另支持IPv6)
    域名定义:
    http://jingyan.baidu.com/article/1974b289a649daf4b1f774cb.html
    顶级域名:以.com,.net,.org,.cn等等属于国际顶级域名,根据目前的国际互联网域名体系,国际顶级域名分为两类:类别顶级域名(gTLD)和地理顶级域名(ccTLD)两种。类别顶级域名是         以”COM”、”NET”、”ORG”、”BIZ”、”INFO”等结尾的域名,均由国外公司负责管理。地理顶级域名是以国家或地区代码为结尾的域名,如”CN”代表中国,”UK”代表英国。地理顶级域名一般由各个国家或地区负责管理。
    二级域名:二级域名是以顶级域名为基础的地理域名,比喻中国的二级域有,.com.cn,.net.cn,.org.cn,.gd.cn等.子域名是其父域名的子域名,比喻父域名是abc.com,子域名就是www.abc.com或者*.abc.com.
    一般来说,二级域名是域名的一条记录,比如alidiedie.com是一个域名,www.alidiedie.com是其中比较常用的记录,一般默认是用这个,但是类似*.alidiedie.com的域名全部称作是alidiedie.com的二级
  • 4.HTTP部分的内容,类似于下面这样:
    GET / HTTP/1.1
    Host: www.google.com
    Connection: keep-alive
    User-Agent: Mozilla/5.0 (Windows NT 6.1) ……
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
    Accept-Encoding: gzip,deflate,sdch
    Accept-Language: zh-CN,zh;q=0.8
    Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
    COOKIE: … …
    我们假定这个部分的长度为4960字节,它会被嵌在TCP数据包之中。
  • 5 TCP协议
    TCP数据包需要设置端口,接收方(Google)的HTTP端口默认是80,发送方(本机)的端口是一个随机生成的1024-65535之间的整数,假定为51775。
    TCP数据包的标头长度为20字节,加上嵌入HTTP的数据包,总长度变为4980字节。
  • 6 IP协议
    然后,TCP数据包再嵌入IP数据包。IP数据包需要设置双方的IP地址,这是已知的,发送方是192.168.1.100(本机),接收方是172.194.72.105(Google)。
    IP数据包的标头长度为20字节,加上嵌入的TCP数据包,总长度变为5000字节。
  • 7 以太网协议
    最后,IP数据包嵌入以太网数据包。以太网数据包需要设置双方的MAC地址,发送方为本机的网卡MAC地址,接收方为网关192.168.1.1的MAC地址(通过ARP协议得到)。
    以太网数据包的数据部分,最大长度为1500字节,而现在的IP数据包长度为5000字节。因此,IP数据包必须分割成四个包。因为每个包都有自己的IP标头(20字节),所以四个包的IP数据包的长度分别为1500、1500、1500、560。
  • 8 服务器端响应
    经过多个网关的转发,Google的服务器172.194.72.105,收到了这四个以太网数据包。
    根据IP标头的序号,Google将四个包拼起来,取出完整的TCP数据包,然后读出里面的”HTTP请求”,接着做出”HTTP响应”,再用TCP协议发回来。
    本机收到HTTP响应以后,就可以将网页显示出来,完成一次网络通信。

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • WebSocket与Socket.io的理解
    WebSocketprotocol是HTML5一种新的协议。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
author-avatar
981378224_014f95
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有