广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python网络-计算机网络基础(23)
  • 182
分享到

python网络-计算机网络基础(23)

计算机网络基础网络 2023-01-31 00:01:56 182人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

一、网络简介 网络是由节点和连线构成,表示诸多对象及其相互联系。 一个人玩:   两个人玩:   多个人玩: 说明 网络就是一种辅助双方或者多方能够连接在一起的工具 如果没有网络可想单机的世界是多么的孤单 使用网络的目的 就是

一、网络简介

网络是由节点和连线构成,表示诸多对象及其相互联系。

一个人玩:

 

两个人玩:

 

多个人玩:

说明

  • 网络就是一种辅助双方或者多方能够连接在一起的工具
  • 如果没有网络可想单机的世界是多么的孤单

使用网络的目的

  • 就是为了联通多方然后进行通信用的,即把数据从一方传递给另外一方
  • 前面的学习编写的程序都是单机的,即不能和其他电脑上的程序进行通信
  • 为了让在不同的电脑上运行的软件,之间能够互相传递数据,就需要借助网络的功能
  • 所谓的网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信

 

二、tcp/ip简介

1. 什么是协议

有的说英语,有的说中文,有的说德语,说同一种语言的人可以交流,不同的语言之间就不行了

为了解决不同种族人之间的语言沟通障碍,现规定国际通用语言是英语,这就是一个规定,这就是协议

2. 计算机网络沟通用什么

现在的生活中,不同的计算机只需要能够联网(有线无线都可以)那么就可以相互进行传递数据,那么不同种类之间的计算机到底是怎么进行数据传递的呢?就像说不同语言的人沟通一样,只要有一种大家都认可都遵守的协议即可,那么这个计算机都遵守的网络通信协议叫做TCP/IP协议

3. TCP/IP协议(族)

早期的计算机网络,都是由各厂商自己规定一套协议,IBM、Apple和Microsoft都有各自的网络协议,互不兼容

为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite)就是通用协议标准。

因为互联网协议包含了上百种协议标准,但是最重要的两个协议是TCP和IP协议,所以,大家把互联网的协议简称TCP/IP协议

常用的网络协议如下图所示:

说明:

  • 网际层也称为:网络层
  • 网络接口层也称为:链路层

 

三、端口简介

那么TCP/IP协议中的端口指的是什么呢?端口就好一个房子的门,是出入这间房子的必经之路。

如果一个进程需要收发网络数据,那么就需要有这样的端口

linux系统中,端口可以有65536(2的16次方)个之多!

既然有这么多,操作系统为了统一管理,所以进行了编号,这就是端口号

2. 端口号

端口是通过端口号来标记的,端口号只有整数,范围是从0到65535

3. 端口是怎样分配的

  • 端口号不是随意使用的,而是按照一定的规定进行分配。
  • 端口的分类标准有好几种,我们这里不做详细讲解,只介绍一下知名端口和动态端口

4.知名端口(Well Known Ports)

知名端口是众所周知的端口号,范围从0到1023

  • 80端口分配给Http服务
  • 21端口分配给FTP服务

可以理解为,一些常用的功能使用的号码好比:电话号码110、10086、10010一样

一般情况下,如果一个程序需要使用知名端口的需要有root权限

5.动态端口(Dynamic Ports)

  • 动态端口的范围是从1024到65535
  • 之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。
  • 动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。
  • 当这个进程关闭时,同时也就释放了所占用的端口号。
  • 用“netstat -an”查看端口状态

6、端口总结

端口有什么用呢 ? 我们知道,一台拥有IP地址的主机可以提供许多服务,比如HTTP(万维网服务)、FTP(文件传输)、SMTP(电子邮件)等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。 需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则可能使用“3457”这样的端口。

 

四、IP地址简介

IP地址就像是我们的家庭住址一样,如果你要写信给一个人,你就要知道他(她)的地址,这样邮递员才能把信送到。计算机发送信息就好比是邮递员,它必须知道唯一的“家庭地址”才能不至于把信送错人家。只不过我们的地址使用文字来表示的,计算机的地址用二进制数字表示。

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。

ip地址的分类

A类IP地址

  • 一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,
  • 地址范围1.0.0.1-126.255.255.254
  • 二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110
  • 可用的A类网络有126个,每个网络能容纳1677214个主机

B类IP地址

  • 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,
  • 地址范围128.1.0.1-191.255.255.254
  • 二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110
  • 可用的B类网络有16384个,每个网络能容纳65534主机

C类IP地址

  • 一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”
  • 范围192.0.1.1-223.255.255.254
  • 二进制表示为: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110
  • C类网络可达2097152个,每个网络能容纳254个主机

D类地址用于多点广播

  • D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。
  • 它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中
  • 多点广播地址用来一次寻址一组计算机
  • 地址范围224.0.0.1-239.255.255.254

E类IP地址

  • 以“1111”开始,为将来使用保留
  • E类地址保留,仅作实验和开发

私有ip

  • 在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就
  • 是属于私网IP,不在公网中使用的,它们的范围是:
  • 10.0.0.0~10.255.255.255
  • 172.16.0.0~172.31.255.255
  • 192.168.0.0~192.168.255.255
  • IP地址127.0.0.1~127.255.255.255用于回路测试
  • 如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1就可以测试本机中配置的WEB服务器。

 

五、子网掩码简介

要想理解什么是子网掩码,就不能不了解IP地址的构成。互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。

IP地址的网络号和主机号各是多少位呢?

如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过子网掩码来实现。

子网掩码不能单独存在,它必须结合IP地址一起使用。

子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分子网掩码的设定必须遵循一定的规则。

与IP地址相同,子网掩码的长度也是32位,

  • 左边是网络位,用二进制数字“1”表示;
  • 右边是主机位,用二进制数字“0”表示。

假设IP地址为“192.168.1.1”子网掩码为“255.255.255.0”,子网掩码装换二进制位:11111111 11111111 11111111 00000000

  • 其中,“1”有24个,代表与此相对应的IP地址左边24位是网络号;
  • “0”有8个,代表与此相对应的IP地址右边8位是主机号。
  • 这样,子网掩码就确定了一个IP地址的32位二进制数字中哪些是网络号、哪些是主机号。
  • 这对于采用TCP/IP协议的网络来说非常重要,只有通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。

最常用的子网掩码是“255.255.255.0”的网络:

  • 最后面一个数字可以在0~255范围内任意变化,因此可以提供256个IP地址。
  • 但是实际可用的IP地址数量是256-2,即254个,因为主机号不能全是“0”或全是“1”。
  • 主机号全为0,表示网络号
  • 主机号全为1,表示网络广播

 

六、Socket简介

1.本地的进程间通信(IPC)有很多种方式,例如

  • 队列
  • 同步(互斥、条件变量等)

以上通信方式都是在一台机器上不同进程之间的通信方式,那么问题来了,网络中进程之间如何通信?

2. 网络中进程之间如何通信

  • 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!
  • 在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。
  • 其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。
  • 这样利用ip地址,协议,端口就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互

3. 什么是socket

  • socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:
  • 它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的
  • 例如我们每天浏览网页、QQ 聊天、收发 email 等等

4. 创建socket

在 Python 中 使用socket 模块的函数 socket 就可以完成:

socket.socket(AddressFamily, Type)

说明:

函数 socket.socket 创建一个 socket,返回该 socket 的描述符,该函数带有两个参数:

  • Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET
  • Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)

创建一个tcp socket(tcp套接字)

import socket

s = socket.socket(socket.AF_INET, SOCK_STREAM)

print 'Socket Created'

创建一个udp socket(udp套接字)

import socket

s = socket.socket(socket.AF_INET, SOCK_DGRAM)

print 'Socket Created'

--结束END--

本文标题: python网络-计算机网络基础(23)

本文链接: https://www.lsjlt.com/news/181981.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python网络-计算机网络基础(23)
    一、网络简介 网络是由节点和连线构成,表示诸多对象及其相互联系。 一个人玩:   两个人玩:   多个人玩: 说明 网络就是一种辅助双方或者多方能够连接在一起的工具 如果没有网络可想单机的世界是多么的孤单 使用网络的目的 就是...
    99+
    2023-01-31
    计算机网络 基础 网络
  • 【网络】计算机网络基础概念入门
    🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐个人主页 🎐✨🍁 🪁...
    99+
    2023-10-19
    计算机网络 OSI网络模型 TCP/IP模型 MAC帧地址 套接字 虚拟网络互联 网络分类
  • 计算机通信与网络基础
    一、概论计算机通信与网络的主要发展过程第一阶段:面向终端的计算机网络。第二阶段:多个计算机互连的计算机网络。第三阶段:面向标准化的计算机网络。第四阶段:面向全球互连的计算机网络。我国的网络发展现状计算机通信与网络的定义和组成计算机网络的定义...
    99+
    2023-06-03
  • 【基础计算机网络1】认识计算机网络体系结构,了解计算机网络的大致模型(上)
    前言        今天,小编我也要进入计算机网络的整个内容,虽然这个计算机网络的内容在考研部分中占比比较小,有些人不把这一部分当成重点,这种想法是错误的。我觉得考研的这四个内容都是非常重要的,我们需要进行全力以赴的对待每一个内容,以提...
    99+
    2023-09-07
    计算机网络
  • 计算机网络基础知识(非常详细)
    1. 网络模型 1.1 OSI 七层参考模型 七层模型,亦称 OSI(Open System Interconnection)参考模型,即开放式系统互联,是网络通信的标准模型。一般称为 OSI 参考模型或七层模型。 它是一个七层的、抽象的模...
    99+
    2023-09-12
    网络 服务器 运维
  • 网络作业11【计算机网络】
    网络作业11【计算机网络】 前言推荐网络作业11一. 单选题(共22题,88分)二. 填空题(共1题,10分)三. 多选题(共1题,2分) 最后 前言 2023-6-29 17:27:...
    99+
    2023-09-03
    网络 计算机网络 php
  • 网络基础(一)桥接网络
    网络基础知识 桥接网络 桥接网络是一种网络设计技术,其目的是将两个或多个网络段连接在一起,使它们在逻辑上表现为单个网络。这通过使用网络桥来实现,网络桥工作在数据链路层(第2层),只关心MAC地址,而不...
    99+
    2023-09-01
    网络
  • 计算机网络之一:网络架构
    一:七层架构OSI是Open System Interconnect即开放系统互连模型。二:五层架构三:四层架构TCP/IP四层模型四层协议和对应的标准七层协议的关系如下图:四:数据包五:程序是如何工作的...
    99+
    2023-06-03
  • 网络基础入门(网络基础概念详解)
      本篇文章主要是对网络初学的概念进行解释,可以让你对网络有一个大概整体的认知。 文章目录 一、简单认识网络 1、1 什么是网络 1、2 网络分类  二、网络模型 2、1OSI七层模型 2、1、1 简单认识协议 2...
    99+
    2023-10-03
    网络
  • 计算机网络-计算机网络体系结构-物理层
    目录 一、通信基础 通信方式 传输方式 码元 传输率 *二 准则 2.1奈氏准则(奈奎斯特定理) 2.2香农定理 三、信号的编码和调制 *数字数据->数字信号 数字数据->模拟信号 模拟数据->数字信号 模拟数据->模拟信号 *四、数据交换...
    99+
    2023-10-07
    计算机网络 笔记
  • 计算机网络编程MQTT协议基础原理详解
    目录什么是 MQTT 协议MQTT 基础发布 - 订阅模式可拓展性消息过滤基于主题的过滤基于内容的过滤基于类型的过滤MQTT 与消息队列的区别MQTT 重要概念MQTT client...
    99+
    2022-11-12
  • Python基础:网络编程socket基
    socket也叫套接字,是对各种协议的封装,实现收发数据。Python里socket工作过程:(图片来自网络)socket在Python中实际上是一个模块,实现发送和接收数据的功能。因为socket是一个类,所以只导入模块需要使用socke...
    99+
    2023-01-31
    网络编程 基础 Python
  • 计算机网络(2) --- 网络套接字UDP
    计算机网络(1) --- 网络介绍_哈里沃克的博客-CSDN博客https://blog.csdn.net/m0_63488627/article/details/131967378spm=1001.2014.3001.5501 目录 1....
    99+
    2023-10-02
    计算机网络 linux c++ 网络
  • 【计算机网络】Linux 内核网络概述
     文章目的 了解 Linux 内核网络架构通过网络包过滤器或者防火墙获得使用的 IP 数据包(分组)管理技巧熟悉如何在 Linux 内核级别使用套接字 概述         网络应用程序的开发过去这些年按照指数级增长,这样增加了对系统网络子...
    99+
    2023-10-04
    linux 内核套接字 socket
  • python编程之网络基础
    1 套接字是一种具有通讯端点概念的计算机网络数据结构,网络化的应用程序在开始任何通讯之前都必须要建立套接字。 套接字起源于20世纪70年代,有时人们把套接字成为“伯克利套接字”或“BSD套接字”,期初,套接字被设计用在同一台主机上多个应用...
    99+
    2023-01-31
    基础 网络 python
  • Python基础:网络编程sockets
    socketserver此模块简化了socket的编写。    1、它有一个基类,定义了如何建立连接。BaseServer提供了服务类接口,BaseServer使用了select创建了多线程。BaseServer下面有四个类:TCPServ...
    99+
    2023-01-31
    网络编程 基础 Python
  • 计算机网络速成
    更好的阅读体验 \color{red}{\huge{更好的阅读体验}} 更好的阅读体验 因特网...
    99+
    2023-09-09
    计算机网络 网络
  • 计算机网络实验
    一、验证性实验 1. ipconfig 自己计算机网络配置 ipconfig /all ​ 物理地址. . . . . . . . . . . . . : 00-E0-4C-68-04-91 IPv4 地址 . . ...
    99+
    2023-10-20
    网络 网络协议 服务器 Powered by 金山文档
  • 计算机网络概述
    目录 一、计算机网络的作用及互联网概述 1.1计算机网络在信息时代中的作用 1.2基本概念 1.3互联网基础架构发展三个阶段 1.4互联网的标准化工作 二、互联网的组成 2.1互联网组成 2.2互联网的边缘部分 2.3互联网的核心部分 三...
    99+
    2023-10-24
    计算机网络 网络
  • 【计算机网络】——前言计算机网络发展的历程概述
     ========================================================================= 主页点击直达:个人主页 我的小仓库:代码仓库 C语言偷着笑:C语言专栏 数据结构挨打小记:...
    99+
    2023-10-18
    计算机网络
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作