python 工程師 爬虫面试 講師 ??
TCP/IP 分层协议? 每层的实现协议?
应用 > 传输 > 网路 >[ 数据链路 > 物理 ] == 网路接口层
--------------------------------------------------------------------
应用: HTTP(超文本传输协议), FTP(文件传输协议) -下载文件, SSH(安全外壳协议), DNS(功能变数名称解析协议) -打开网页, 将功能变数名称解析成ip addr
传输: TCP (Transmission Control Protocol) "可靠"的传输通信协议 -3次握手, 4次挥手
UCP (User Datagram Protocol) 无连接, 面向事务, 简单不可靠的协议 -e.g. watch video
网路: IP(ip addr), ICMP (Internet Control Message Protocol) 探测当前主机能否上网, 及上网状态
如何查询局域网状态? ipconfig /all 查看DHCP server addr -> ping [DHCP-addr]
如何查询网际网路状态? ping www.xxx.com
数据链路: ARP(物理解析協議 -根據ip [互聯網地址] ->MAC addr[局域網循址地址] ), RARP Reverse Address Resolution Protocol (MAC -> ip)
物理: 物理传输媒介
-------------------------------------------------------------------------
爬蟲如何去重?
md5 指紋 -MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16位元组)的散列值(hash value),用于确保信息传输完整一致。
实现: 利用内置模块hashlib
import hashlib m = hashlib.md5() # 假设文件内容 src = "I like python." m.update(src.encode('utf-8')) print(m.hexdigest) 假设现有有两个文件,我们需要验证这两个文件是否一样 import hashlib # 封裝函數 def md5_num(src): m.update(src.encode('utf-8)) return m.hexdigest with open('1.json', 'r', encoding='utf-8') as f: src = f.read() m1 = md5_num(src) with open('2.json', 'r', encoding='utf-8') as f: src = f.read() m2 = md5_num(src) print('数据重复啦!!') if not m1 == m2 pass
數據量不大時, 可放在內存中set/redis去重
----------------------------------------------------------
简述输入网址到看到网页过程:
宏观: 具域網ip > 操作系统缓存(本地hosts文件)> LDNS (本地DNS服务器, 通过ipconfig可以查到)>
主域名服务器(国际的顶级域名服务器,根域名服务器全球只有13台)请求解析 > 回Name Server請求的網站域名服务器地址(注册的域名服务器)> LDNS服务器向注册时的服务器(出口IP)发出请求 > return ip addr > 炫染網頁微观: 域名解析 > 連接 (TCP 3次握手, 4次揮手)
一个TCP连接由一个4元组构成,分别是两个IP地址和两个端口号。一个TCP连接通常分为三个阶段:启动、数据传输、退出(关闭)
參考資料: https://developer.aliyun.com/article/768959, https://zhuanlan.zhihu.com/p/53374516 https://www.youtube.com/watch?v=Iuvjwrm_O5g
共同学习,写下你的评论
评论加载中...
作者其他优质文章