码迷,mamicode.com
首页 > 编程语言 > 详细

python网络编程

时间:2018-05-08 00:53:56      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:简单的   32位   --   计算机   用户   除了   div   ike   编程   

知识内容:

1.网络基础

2.socket语法及相关

3.SocketServer实现多并发

 

参考:

http://www.cnblogs.com/Eva-J/articles/8244551.html

http://www.cnblogs.com/alex3714/articles/5227251.html

 

 

 

一、网络基础

1.C/S架构与B/S架构

(1)C/S架构:client-server架构

C/S即client/server架构,是当前大多数网络编程所采用的架构模型。通过它可以充分利用两端硬件环境的优势,将任务合理分配到client端和server端来实现,降低了系统的通信开销。client/server架构一般有一台后台计算机作为服务器,用户的个人机上的软件程序作为客户端

server:服务端     client:客户端

典型应用:QQ、LOL

 

(2)B/S架构:browser-server架构

B/S即browser/server架构,是web兴起后流行起来的一种网络架构模式,B/S架构使用浏览器当作客户点的应用软件,所以B/S架构可以看作C/S的一种特殊情况,是对C/S架构模式的一种改进

serve:服务端     browser:浏览器

典型应用:所有的网站

 

(3)B/S架构的优点

a.便于部署、维护和升级: B/S的应用程序都部署在后台服务器上,一般无需更新客户端软件(即浏览器)

b.跨平台、对客户机要求低:  客户端的计算机硬件环境千差万别,传统C/S架构需要对不同操作系统开发不同的客户端软件,而每种操作系统都支持web浏览器,基于web开发的B/S架构系统只需开发一套客户端程序并且客户端程序是部署在web服务器上,由浏览器在访问时下载到客户端运行 (注: 这里的客户端程序一般指前端代码 eg: HTML\CSS\JavaScript等)

c.对安全性要求极高:  B/S架构系统一般建立在广域网上,也就是有很多人能访问,面向的是未知用户,所以开发B/S系统时更要注意系统的防攻击、数据加密、备份、非伪造等能力

 

(4)B/S架构与C/S架构的关系

B/S架构其实C/S架构的一种,不过client变成了browser,browser其实也是一种客户端

 

 

2.IP地址、端口、域名与URL

(1)IP地址

网络地址是一个网络层中的概念,是物联网上的主机在网络中具有的逻辑地址,计算机网络中采用IP地址表示网络地址。现在的IP地址可以分为IPv4和IPv6两种

 

IPv4: 一个32位二进制数的地址,一般表示为4个十进制数字,比如: 172.16.32.3、10.38.96.243等 

一个IPv4地址被划分为两部分: 网络地址和主机地址。根据网络地址和主机地址的不同位数规定,可以将IP地址划分为3类:

A(8位网络地址和24位主机地址)  B(16位网络地址和16位主机地址)  C(24位网络地址和8位主机地址),由于某些原因,A类和B类地址几乎分配殆尽

 

IPv6: 由于IPv4的数量限制,就推出了IPv6,IPv6由1128位二进制数表示,在表达方式上使用8个16进制数字表示,比如: d23:4334:0:0:23:ade:9853:23

 

IPv4与IPv6比较:  单从数量级上来说,IPv6所拥有的地址容量大概是IPv4的8*10^28倍,达到2^128个。IPv6不但解决了网络地址资源数量的问题,也为除了计算机外的设备分配IP地址来连入互联网提供了方便。当然目前广泛使用的还是IPv4,但是毫无疑问IPv6将是未来IP地址的主流。

 

为什么需要IP地址:为了方便找到其他主机,可以通过ARP协议将IP地址转化成MAC地址, MAC地址是一个主机的唯一标识

关于ARP协议:https://baike.baidu.com/item/ARP/609343?fr=aladdin&fromid=1742212&fromtitle=ARP%E5%8D%8F%E8%AE%AE

 

保留IP地址:保留IP地址不会在互联网中使用,其主要被用在企业机构内部作为局域网地址使用

保留地址主要在以下四类:

  • A类:10.0.0.0-10.255.255.255(长度相当于1个A类IP地址)
  • A类:100.64.0.0-100.127.255.255
  • B类:172.16.0.0-172.31.255.255(长度相当于16个连续的B类IP地址)
  • C类:192.168.0.0-192.168.255.255(长度相当于256个连续的C类IP地址)

这些地址是不会被互联网分配的,也不会被路由通过

127.0.0.1 -> 回环地址

 

(2)端口

在web中,端口是一个软件级的概念,是虚拟端口,IP地址是网络层的寻址方式,而端口就是传输层的寻址方式。端口是一个16位二进制数表达的正整数,数字范围为0到65535

注:在同一时间内只能有只会有一个程序占用一个端口,不可能同时有两个程序占用同一个端口,一般情况下我们自己使用8000之后的端口

常用的默认端口号:

技术分享图片

 

IP地址与端口:

  • IP-->确定一台主机
  • 端口-->确定唯一的程序
  • IP+端口-->确定唯一的一台机器上的唯一的一个程序

 

(3)域名

IP地址由纯数字组成,让人难以记住,且不能表达功能、地理位置等信息,所以标准化组织就定义了域名这种主机地址表示方式

域名: 域名是应用层概念,是由一串用点分割的名字组成的网络上某台计算机或计算机组的名称,域名可以说是IP地址的一个面具

常见的域名: www.baidu.com   www.sina.com.cn

 

注:

域名中的符号都由英文字母和数字组成,每个标点不超过63个字符,也不区分大小写字母,标号中除了连字符(-)以外不能使用任何其他标点符号

 

(4)URL

URL: 全球统一资源定位符  其实就是一个链接,链接背后是资源,资源可以是一张图片、一首歌、一张网页、、、

URL的标准形式:   [协议]://[主机]:[端口]/[路径]?[参数]      注: 一般协议有: http、https、ftp等  端口一般都省略了

eg:  https://www.nowcoder.com/1476481

    http://www.cnblogs.com/wyb666/p/8494861.html

 

 

3.OSI七层模型

osi七层模型是人们按照分工不同将互联网协议从逻辑上划分了层级:

技术分享图片

 

 

4.TCP/UDP协议

(1)TCP

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议

TCP的特性:  有序性、真确性、可靠性、可控性,TCP使用面向连接的方式收发数据,在收发数据之前需建立连接,在数据传输之后释放连接,建立连接时采用3次握手的方式来保证发送的可靠性、可控性

在双方成功握手之后将在两个应用程序之间建立一个全双工的通信,这个全双工通信将占用两个计算机之间的通信线路,直到它被一方关闭或双方关闭为止

全双工:双方可以互发消息,接受消息

技术分享图片

 

 

(2)UDP

UDP是一种无连接的传输层协议,提供面向对象的简单的不可靠信息传送服务,虽然UDP不可靠,但是由于UDP的开销小一般UDP适用于吞吐量大(轻量级控制)、可以承受信息丢失(传输不可靠)的应用场景。而且在网络状况良好的情况下,UDP的丢包率在实际情况下也非常少,所以有很多经典的协议采用UDP进行传输,比如SNMP、NFS、DNS等

 

 

5.HTTP协议

(1)HTTP介绍

HTTP即超文本传输协议,是web中的最主要的web应用层标准,B/S架构的应用系统用HTTP在客户端于服务器之间进行传输数据。HTTP可以传输任何格式的数据,比如说文本、图片甚至视频都可以通过HTTP进行传输

 

(2)HTTP流程

 技术分享图片

HTTP端口号默认为80,当服务器发现有客户端建立连接并提交了一个HTTP请求后,就根据请求的内容执行相应的操作,并将结果返回给客户端

通常来说客户在浏览器中输入URL发起一次网络访问的步骤如下:

  • 输入URL(网址),比如访问http://mysite:8080/app/index.html
  • 浏览器通过域名系统查询mysite对应的真实IP,比如212.34.98.20
  • 向服务器212.34.98.20的8080端口(HTTP端口)发送TCP连接请求并建立连接
  • 发送HTTP请求的内容包括访问的地址(/app/index.html)、访问方式(get)、浏览器本身的产品名等信息
  • 服务器返回对应地址(/app/index.html)中的数据作为response发送给客户端,如果请求的不是一个文件,则服务器需执行相应的代码,动态生成并返回给客户端
  • 浏览器接受到结果后关闭与服务器的TCP连接
  • 浏览器将接受到的结果(HTML、CSS、JavaScript)解析并最后呈现在显示器上

 

 

6.socket

(1)socket基础

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力

 

(2)socket连接过程

服务器监听->服务器socket并不定位具体的客户端socket,而是处于等待链接的状态,实时监控网络状态

客户端请求->客户端socket发出连接请求,要连接的目标是服务端socket,为此,客户端socket必须先描述它要连接的服务端socket,指出服务端socket的地址和端口号,然后想服务端socket提出连接请求

连接确认->当服务端socket监听到或者说是接收到客户端socket的连接请求,它就响应客户端socket的请求,建立一个新的线程,把服务端socket的描述发给客户端,一旦客户端确认了,连接就好了。服务端socket基础处于监听状态

 

(3)socket两种模式

socket有两种操作方式:面向连接和无连接的。面向连接的socket操作就像一部电话,必须建立一个连接和一个呼叫,所有事情在到达是的顺序和它们出发的顺序一样,无连接的socket就想一个邮件投递,没有什么保证,顺序很可能会不同。

具体使用什么模式得看场景,如果可靠性更重要的话,用面向连接的好一些。

无连接的操作使用数据报协议(udp),这种模式下的socket不需要连接一个目的socket,只是简单的透出数据报,无连接的操作是高效的,但是不安全。

面向连接的操作使用tcp协议。效率低一些,但是安全性高

 

(4)socket层

技术分享图片

(5)理解socket

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议

 

 

 

二、socket语法及相关

 

 

 

三、SocketServer实现多并发 

 

python网络编程

标签:简单的   32位   --   计算机   用户   除了   div   ike   编程   

原文地址:https://www.cnblogs.com/wyb666/p/9005669.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!