python开发学习笔记(9)————网络通信

1.短链接:

建立连接----数据传输----关闭连接……建立连接----数据传输----关闭连接

2.长连接

建立连接----数据传输……(保持连接)……数据传输----关闭连接

3.epoll

epoll 的好处就在于单个process就可以同时处理多个网络连接的IO
内存映射技术

#创建epoll对象
import select
epl = select.epoll()
#将监听套接字对应的fd注册到epoll中
epl.register(tcp_server_socket.filend(), select.EPOLLIN)
fd_event_dict = dict()
while True:
	fd_event_list = epl.poll() # 默认会堵塞,直到os检测到数据到来,通过事件通知方式 告诉这个程序,此时才会解堵塞

	 #[(fd, event), 套接字对应的文件描述符,这个文件描述符到底是什么事件  例如  可以调用recv接收等]
	for fd,event in fd_event_list:
		if fd == tcp_server_socket.filend():
			new_socket, client_addr = tcp_server_socket.accept()
			epl.register(new_sockeet.filend(), select.EPOLLIN)
			fd_even_dict[new_socket.filend()] = new_socket
		elif event == select.EPOLLIN:
			# 判断已经链接的客户端是否有数据发送过来
			# 收到数据进行处理
			recv_data = fd_event_dict[fd].recv(1024).decode(“utf-8”)
			if recv_data:
				service_client(fd_event_dict[fd], recv_data)
			else:
				fd_event_dict[fd].close()
				epl.unresgister(fd)
del   fd_event_dict[fd]
4.网络通信过程
1)tcp-ip协议族

协议族
网络:应用层、传输层、网际层(网络层)、网络接口层(链路层)
应用层: 如,HTTP,迅雷,QQ,微信。应用自己设定自己的协议
传输层:tcp、udp。 tcp和udp的端口号可以相同,因为这是两种协议
网络层:IP等,有的应用程序可以直接通过IP发送消息,叫原始套接字
链路层:网卡等

应用层:
传输层:tcp +端口
ip层:ip +ip
链路层:帧头和帧尾 +mac地址

2)另一套标准
OSI	                      TCP/IP

应用层(Applicaition)	  应用层
表示层(Presentation)	
会话层(Session)	

传输层(Transport)	      运输层

网络层(Network)	      网际层

数据链路层(Data Link)	 网络接口层
物理层(Physical)	
2)两台电脑通信、掩码

按位与操作 都为1 才为1,只要有1个0,那么就是0

将ip与掩码进行按位与操作,计算结果中,不为零的为网络号,零为主机号

如,

ip	          192	      168	      33	       99
ip二进制	    11000000	10101000	00100001	01100011
掩码	      255	      255	      255	        0
掩码二进制	11111111	11111111	11111111	00000000
按位与操作	11000000	10101000	00100001	00000000
	           192	       168	       33	        0

两台电脑通信,需要ip地址及网络掩码

3)使用集线器组成一个网络

一般情况下,集线器的接口较少。
集线器有个缺点,它以广播的方式进行发送任何数据,即如果集线器接收到了来自A电脑的数据本来是想发给B电脑,如果此时它还连接着另外两台电脑C、D,那么它会把这个数据给每个电脑都发一份,因此会导致网络拥堵。

4)使用交换机组成一个网络

arp协议:可以得到对应ip的mac地址
可以广播,可以单播
首先,使用arp广播,获取目标ip的mac地址,每台电脑除了自身的mac地址,还接受一个特殊的mac地址:FF:FF:FF:FF:FF:FF,所有电脑都能收到,以次来找到目标ip的mac地址。
a。克服了集线器以广播发送数据的缺点,当需要广播的时候发送广播,当需要单播的时候发送单播。
b。它已经替代了之前的集线器
c。企业中就是用交换机来完成多态电脑设备的链接成网络的

5)使用路由器连接多个网络

网络号不同的两个网络无法直接通信,可以通过路由器实现通信
路由器两个网卡分别设置成两个网络的ip,实现两个网络的链接。
默认网关用于连接两个网络,路由器一般就是默认网关。
发送方先发送给路由器上本网络的网卡,此时目的mac为路由器上本网络网卡的mac地址,路由器再将目的mac改为目的电脑的mac地址,通过另一个网卡进行发送。
PS:数据在网络中那个传播时,ip地址不会变,mac地址会一直变,因为要经过不同的路由器节点

6)通信过程

a。解析域名。DNS服务器(类似电话本,域名与ip配对)。本机根据DNS服务器ip,向dns服务器发送请求,dns收到信息后,对域名进行解析,把域名对应的ip发送回本机。
b。向服务器发送tcp的3次握手。
c。发送http的请求数据以及等待服务器的应答
d。发送tcp的4次挥手
计算机首先把域名与dns服务器ip发送给网关,网关根据dns服务器ip通过互联网把请求发送给dns服务器,dns服务器根据域名找到域名对应的IP地址,回复给计算机。计算机根据ip地址,与目标服务器进行三次握手。三次握手成功之后,计算机发送http请求,将请求通过网关发往互联网,通过互联网发送到目标服务器。目标服务器进行应答。数据交换结束后,发送tcp的4次挥手,结束通信。
通信过程中,ip不变,mac地址会变,ip引领主要方向,mac地址变化为下一个节点网卡的mac地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值