网络编程

1,python 的底层网络交互模块有哪些?

  socket, urllib,urllib3 , requests, grab, pycurl

2,osi七层协议

自下而上 应用层,表示层,会话层,传输层,网络层,数据链路层,物理层

物理层:是参考模型的最低城,该层是网络通信的数据传输介质,由连接不同节点的电缆与设备共同构成,主要功能是:利用传输介质为数据链路层提供物理连接,负责处理数据传输并监控数据出错率,以便数据流的透明传输.

数据链路层:是产考模型的第二层,主要功能是:在物理层提供的服务基础上,在通信的实体间建立数据链路连接,传输以'帧'为单位的数据包,并采用差别控制与流量控制方法,使有差错的物理线路变成无差别的数据链路

网络层:是参考模型的第三层,主要功能是:为数据在节点之间传输创建逻辑链路,通过路由选择算法为分组通过分组通过通信子网选择最适当的路径,以及实现拥塞控制,网络互连等功能.

传输层:是参考模型的第四层,主要功能是:向用户提供可靠的端到端服务,处理数据包错误,数据包次序.以及其他一些关键传输问题,传输层向高层屏蔽了下层数据通信的细节.,因此,他是计算机通信体系结构中关键的一层

会话层:是参考模型的第五层,主要功能是:负责维护俩个节点之间的传输连接以便确保点到点传输不中断以及管理数据交换等功能.

表示层:是参考模型的第六层.主要功能是:用于处理在俩个通信系统中交换信息的表示方法.主要包括书库格式转换.数据加密与解密,数据压缩与恢复等功能;

应用层:是参考模型的最高层,主要功能是为应用软件提供了很多服务,比如文件服务器,数据库服务,电子邮件与其他网络软件服务.

osi历史

osi模型是因为美国人的俩台之间有通信的需求

需求1: 俩个硬件之间如何进行通信,具体就是一台发比特流,另一台能够收到,于是就有了物理层,主要定义设备标准,如网线得接口类型,管线的接口类型,各种传输介质的传输速率.他们主要作用是.传输比特流.就是从1/0转化为电流强弱来进行传输,到达目的之后再转化为1/0 也就是我们常说的数模转换,

需求2:现在通过电信能发数据流了,但是我还是希望能通过无线电波,通过其他介质来进行传输,然后我还要保证传输过去的比特流是正确的需要有纠正错误的功能.

数据链路层:定义了如何让格式化数据进行传输,以及如何让控制对物理介质的访问,这一层通常还是提供错误检测和纠正,以及确保数据的可靠传输.

需求3:现在我能发正确的比特流数据到另一台计算机了但是当我发大量的数据的时候 可能需要很长时间,例如:一个视频格式的网络会中断好多次实际上即使有了物理层金和数据链路层网络还是经常中断,只是中断的级别是毫秒级别的.

那么我还需要保证传输大量文件时的准确性,于是我要对发出去的数据进行封装,就行发快递一样一个一个发送.

于是就发明了传输层.传输层在osi模型中在网络层上面

比如TCP是用于发大量数据的我发出去一万个包,另一台电脑就需要告诉我是否接收到一万个包,如果缺少3个包就告诉我是第多少个包丢了,那我再发一次,这样就能保证对方把这个视频完整接收了

列如UDP:适用发送少量数据的我发20 个包出去一般不会丢包,所以我不管你收到多少,在多人互动游戏中也经常收到udp协议因为一般都是简单的信息,而且有广播的需求,如果用tcp,效率就会很低,因为他会不同的告诉主机我收到20个包或者18个包,再发我俩个,如果同时又一万台计算机都这样做没那么tcp反而会降低效率.还不如用udp,主机发出去救算了,丢几个包就卡一下,

TCP协议是会绑定ip和端口的协议,下面会介绍ip协议

需求4:传输成结局了打包的问题牡丹石如果我有多台计算机,怎么能找到我要发哪台?到我要发的那台?或者A要给F发信息,中间要经过B/C/D/E,但是中间还有好多节点,如K/J/Z/Y.我怎么选择最佳路径?这就是路由要做的事情。

于是发明了网络层也就是路由器,交换那些局域寻址功能的设备所实现的功能,这一层定义的是ip复制,通过ip地址寻址,所以产生了协议.

需求5:现在已经能够给指定的计算机发送正确的封装过得信息了但是用户级别的体验并不是很好,难道我每次都要调用tcp去打包用议去找路由,自己去发?当然不行,所以我要建立一个自动收发包,自动寻址的功能,于是发明了会话层,会话层的作用就是建立和管理应用程序之间的通信,

需求6:现在我能保证应用程序自动收发包和寻址了,但是我要用linux给window发包,来个系统语法不一致,就像安装包一样,exe不能再linux下用,shell在window也是不能直接用行的.

于是需要表示层,帮助我们结局不同系统之间通信语法问题

需求7:现在所有必要条件都准备好了,我们可以写个Android程序,web程序去实现需求吧。

补充:不知道有没有小伙伴熟悉Socket,这不是一个协议,而是一个通信模型。其实它最初是伯克利加州分校软件研究所,简称BSD发明的,主要是一台电脑两个进程之间进行通信,然后把它用到两台电脑的进程间通信。所以,可以把它简单理解为进程间通信,不是什么高级的东西,主要是这么做的:A发包:发请求包给某个已经绑定的端口;收到B的允许后,正式开始发送,发送完了,高速B要断开连接;收到断开允许后,马上断开,然后发送已经断开信息给B。

 

B收包:绑定端口和IP,然后在这个端口监听接收到A的请求,发给A,并做好接收准备,主要就是清理缓存等待接收新数据;然后正式接收,接收到断开请求,并允许断开,确认断开后,继续监听其他请求。

 

换句话说,socket就是I/O操作,socket并不仅限于网络通信。在网络通信中,它涵盖了网络层、传输层、会话层、表示层、应用层。

 

3. OSI七层协议中每一层的特征

第一层:物理层

机械性能:接口的形状,尺寸的大小,引脚的数目和排列方式等;

电气性能:接口规定信号的电压、电流、阻抗、波形、速率好平衡特性等;

工程规范:接口引脚的意义、特性、标准。

工作方式:确定数据位流的传输方式,如:半双工、全双工等。

物理层协议:美国电子工业协会(EIA)的RS232/RS422/RS423等;

国际电报电话咨询委员会(CCITT)的X.25/X.21等;

物理层的数据单位是位(BIT),典型设备时集线器HUB。

这主要是和硬件有关,与软件关系不大。

第二层:链路层

链路层屏蔽传输介质的物理特征,使数据可靠传送。

内容包括介质访问控制、连接控制、顺序控制、流量控制、差错控制和仲裁协议等。

链路层协议有:协议有面向字符的通讯协议(PPP)和面向位的通讯协议(HDLC)。

仲裁协议:CSMA/CD(Carrier Sense Multiple Access with Collision Detection)、Token Bus、Token Ring

链路层数据单位是帧,实现对MAC地址的访问,典型设备是交换机SWITCH。

 

第三层:网络层

网络层管理连接方式和路由选择。

连接方式:虚电路和数据报服务。

虚电路是面向连接的,数据通讯一次路由,通过会话建立的一条通路。数据报是非连接的,每个数据报都有路由能力。网络层的数据单位是包,使用的是IP地址,典型设备时路由器Router。

这一层可以进行流量控制,但流量控制更多的是使用第二层或第四层。

 

第四层:传输层

提供端到端的服务,可以实现流量控制、负载均衡。

传输层信息包括端口、控制字和校验和。

传输层协议主要是TCP和UDP。

传输层位于OSI的第四层,这层使用的设备时主机本身。

 

第五层:会话层

会话层主要内容时通过 绘画进行身份验证、绘画管理和确定通讯方式。一旦建立连接,会话层的任务就是管理会话。

 

第六层:表示层

表示层主要是解释通讯数据的意义,如代码转换、格式变换等,使不同的终端可以表示。

还包括加密与解密、压缩与解压等。

 

第七层:应用层

应用层应该是直接面向用户的程序或服务,包括系统程序和用户程序,比如www、FTP、DNS、POP3和SMTP等都是应用层服务。

数据再发送时是数据从应用层至物理层的一个大包的过程,接收时是数据从物理层至应用层的一个解包过程。

从功能角度可以分为三组:1/2层解决网络通信问题,3/4层解决传输问题,5/6/7层处理对应用进程的访问。

从控制角度可分为二组:1/2/3层是通信子网,4/5/6/7是主机控制层。

 

posted on 2019-03-08 20:26  yw1229  阅读(181)  评论(0编辑  收藏  举报

导航