Week 15
12.1 网络技术 Networked Technology
- 分层架构:应用层,传输层,互联网层,链路层,物理层
- 传出层:端到端
- 传输控制协议(TCP):
- 建立在IP上
- 假设IP可能会丢失部分数据——如果丢失了就重传
- 使用一个传输窗口解决流控制问题
- 提供一个可信管道
- 套接字:TCP链接
- 一个网络套接字是跨越一个基于互联网歇息网络的双向进程间通信的一个端点
- TCP端口号:
- 端口是一个指定应用或指定进程的软件通信端点
- 允许多个应用在一个网络服务器上共存
- 有一些普遍了解的TCP端口号
- python上的套接字(创建链接):
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('HOSTNAME', PortNumber))
12.2 超文本传输协议(HTTP) Hypertext Transfer Protocol (HTTP)
- 应用程序协议:相对于TCP提供一个套接字供我们使用和维护链接,应用程序协议则是利用这些链接
- HTTP:超文本传输协议
- 互联网上的首要应用层协议
- 为web设计——取回HTML,图像,文档等等
- 扩展到除了文档意外的数据——RSS,web服务等等
- 基本流程:建立连接,请求文档,取回文档,关闭连接
- HTTP:一组供浏览器从服务器取回文档的规则
- 协议:一组各方都遵守的规则以确保我们能够预知对方的行为
- URL:统一资源定位符
- (协议)https://(域名)www.dr-chunk.com(文档)/page1.html
- 在一个页面跳转到另一个页面是使用一个请求-回应循环实现的
- HTTP回应报文由元数据和页面内容组成
- 请求python实现
cmd = 'GET http://data.pr4e.org/remeo.txt HTTP/1.0\r\n\r\n'.encode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if (len(data) < 1):
break
print(data.decode())
mysock.close()
套接字 Sockets
使用开发者终端探索HTTP Using the Developer Console to Explore HTTP
- 404:请求未找到
- 302:重定向到指定(正确的)网址