网络通信--Python高级

Python高级

网络通信(Network Communication)

看似是两个机器对话,其实是位于两个机器上两个进程在相互收发数据,即网络通信也是一种IPC实现,它不仅可以实现一个机器上的两个进程通信,还能实现位于不同地域的两台机器上的进程间通信

通信地址要明确,在计算机网络世界中,通过IP地址(Internet Protocol Address)表示一个机器在网络中的位置,通过端口号(Port)区分表示一个机器内部的不同进程,端口号是一个无符号整数,取值范围0-65535,其中1024以下的端口号称为熟知端口号,知名的软件服务通常使用这个范围的端口号,比如Web服务器使用80,FTP服务器使用21,SMTP服务器使用25,SSH服务使用22等,我们自己开发的应用程序建议使用1024以上的端口号,以免跟它们冲突,所以,计算机网络通信地址是由IP和端口号联合构成,二者缺一不可。

要实现正常通信,除了参与通信的进程地址要明确之外,还要遵守统一的通信规则,比如通信的数据格式,通信的流程等,这就是所谓的通信协议

通信至少需要两个程序参与,被动通信的一方称为服务器端程序(Server),主动发起通信的一方称为客户端程序(Client),这种通信模式称为C/S模式

计算机网络常识

计算机网络分类:局域网(LAN),城域网,广域网(WAN)、Internet(互联网)

网卡(网络适配器, Network Adapter):接入某个网络的硬件入口,俗称网卡,一个机器可以安装多个网卡,用于接入不同的网络

主流通信网络:电信网络、计算机网络、有线电视网络,电力网络等

计算机网络是开放式的,构建成本非常低,最简单情况下可以使用一根1米长的网线将两台机器连接起来就构成了一个局域网

计算机网络系统分层结构:

TCP/IP标准(4层):物理层、网络层、传输层、应用层

OSI/RM标准(7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

在计算机网络系统中,有很多通信协议,而最重要的通信协议是TCP和IP协议,通常将所有通信协议统称为TCP/IP协议族

网络层协议:IP(Internet Protocol)

传输层协议:TCP(Transport Control Protocol)、UDP(User Datagram Protocol)

应用层协议:SSH(Secure Shell, 基于TCP, 默认端口号为22)、HTTP(Hyper Text Transport Protocol,基于TCP,默认端口为80)、FTP(File Transport Protocol,基于TCP,默认端口21)、SMTP(Simple Mail Transport Protocol,基于TCP,默认端口号25)、POP3(Post Office ,Protocol,基于TCP,默认端口110)、DNS(Domain Name System,基于UDP,默认端口53)等

扩展学习 :IP地址分类,IPV4,IPv6,子网掩码,默认网关,DNS服务器

基于UDP协议通信的实现

使用标准库中的socket模块实现

扩展

  1. str和bytes之间的转换,调用encode
  2. 将字节转换为字符串 用decode方法
  3. 任何时候ping 127.x.x.x(自己)都ping得通,不然就是网卡坏了
  4. 应用层协议是基于传输层协议的
  5. 浏览器和web服务器的通信就是HTTP协议
  6. 端口号的两端不要用,建议使用1024以后的端口
  7. 局域网:最小的计算机网络
  8. 计算机网络并不是电信或广电局的网络,它们的网络是封闭的,一般用户不能进行使用

原文地址:https://www.cnblogs.com/yanruizhe/p/11297685.html

时间: 2024-09-28 22:49:35

网络通信--Python高级的相关文章

python高级之网络编程

python高级之网络编程 本节内容 网络通信概念 socket编程 socket模块一些方法 聊天socket实现 远程执行命令及上传文件 socketserver及其源码分析 1.网络通信概念 说到网络通信,那就不得不说TCP/IP协议簇的OSI七层模型了,这个东西当初在学校都学烂了...(PS:毕竟本人是网络工程专业出身...) 简单介绍下七层模型从底层到上层的顺序:物理层(定义物理设备的各项标准),数据链路层(mac地址等其他东西的封装),网络层(IP包头的的封装),传输层(TCP/UD

python高级编程之(类级):子类内建类型

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #类级 #在2.2中,提出了类型(type0与类(class)统一(请访问:https://www.python.org/download/releases/2.2.3/descintro(可能已经不存在了))-这使内建类型的子类化成为可能,并且添加一个新内建类型object #用于所有内建类的公共祖先 #展示一个名为distinctdict类的代码,与平常的dic

51CTO学院Python高级自动化开发工程师微职位学员自我介绍

51CTO学院Python高级自动化开发工程师微职位 自我介绍及学习宣言 亲爱的小伙伴:欢迎大家报名51CTO学院&老男孩Alex Python高级自动化开发工程师微职位学习,跟随alex.武sir学习屌炸天的python技术,成就技术大牛之梦.为了督促大家一直积极认真努力的学习,请各位同学在跟帖写出你的自我介绍.学习宣言,不忘初心,一直跟着老师一步一个脚印,扎扎实实学本领. 跟帖格式:我是xxx,我参加了51CTO学院&老男孩Alex Python高级自动化开发工程师微职位学习,从201

python高级编程:有用的设计模式2

# -*- coding: utf-8 -*- __author__ = 'Administrator' #python高级编程:有用的设计模式 #代理 """ 代理对一个代价昂贵或者远程的资源提供了一个非直接访问的机制 在客户和主意之间,如图.它用来优化对高代价主题的访问,比如,在前一章中描述的memoize装饰器可以被认为是一个代理 ,它还可以用提供到一个主题智能访问,例如,大的视频文件可以封闭在代理中,以避免在用户仅仅请教其标题时就将文件载入到内存中 urllib2出给

python高级编程:有用的设计模式1

# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#设计械是可复用的,某种程序上它对软件设计中觉问题提供的语言相关解决识方案,最近最流行的书籍:"""gamma.heim.johson和vlissides a.k.a"四人组(gof)"编写的elements of reusable object-oriented software(中文:<设计模式:可复用面向对

python高级编程之装饰器04

from __future__ import with_statement # -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #with和contextlib #对于要确保即使发生一个错误时也能运行一些清理代码而言,try...finally语句很有用,对以下场景,如: """ 关闭一个文件, 释放一个锁 创建一个临时代码补丁 在特殊环境中运行受保护代码 ----------- with语句覆盖

python高级编程之迭代器与生成器

# -*- coding: utf-8 -*- # python:2.x __author__ = 'Administrator' #迭代器与生成器 #--------------------------------------- #迭代器基于2个方法 """ next:返回容器下一个项目 __iter__:返回迭代器本身 """ #通过内建函数和序列来创建 i=iter('abc') print i.next()#a print i.next(

python高级编程之列表解析

#列表解析 #编写0到10之间的偶数 #方法1 #结果:[0, 2, 4, 6, 8] num=range(10) num1=len(num) evens=[] i=0 while i<num1: if i%2==0: evens.append(i) i+=1 print evens #方法2 print [(i)for i in range(10)if i%2==0] #enumerate获取索引 #方法1 i=0 l=['a','b','c','d'] for  li in l: l[i]=

python高级编程:有用的设计模式3

# -*- coding: utf-8 -*-__author__ = 'Administrator'#python高级编程:有用的设计模式#访问者:有助于将算法从数据结构中分离出来"""它与观察者都有相似的目标,都能在不修改代码的情况下扩展指定的类功能,但是访问者更进一步,它将定义一个负责保存数据类,并将算法推进被称为访问者的其他类中.这种行为和mvc范围(请看:http://en.wikipedia.org/wiki/model-view-controller)相当类似,