《Using Python to Access Web Data》 Week3 Networks and Sockets 课堂笔记
Coursera课程《Using Python to Access Web Data》 密歇根大学
Week3 Networks and Sockets
12.1 Networked Technology
Transport Control Protocol(TCP)
TCP端口就是为TCP协议通信提供服务的端口。TCP(Transmission Control Protocol),TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议。
在计算机网络OSI模型中,它完成第四层传输层所指定的功能。我们的电脑与网络连接的许多应用都是通过TCP端口所实现的。
TCP Connections / Sockets
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
TCP Port Numbers
端口(port)是特定应用或特定程序之间软件交流的终点。它允许多种网络应用同时存在于同一服务。
一些TCP的端口号如下。
Common TCP Ports
- Telnet(23) - Login
- SSH(22) - Secure Login
- HTTP(80)
- HTTPS(443) - Secure
- SMTP(25)(Mail)
- IMAP(143/220/993) - Mail Retrieval
- POP(109/110) - Mail Retrieval
- DNS(53) - Domain Name
- FTP(21) - File Transfer
Sockets in Python
Python有内置的支持TCP Sockets的包。
三行代码就可以使用。
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org',80))
其中'data.pr4e.org'是host,80是port。
12.2 Hypertext Transfer Protocol(HTTP)
HTTP - Hypertext Transfer Protocol
超文本传输协议(HTTP,Hypertext Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。
HTTP也就是一系列的规定,来使得浏览器通过网络上的服务来获取网络文档。
对于我们一个网址来说,比如http://www.dr-chuck.com/page1.htm,http://是protocol,www.dr-chuck.com是host,而/page1.htm是document。
Getting Data From The Server
每个用户切换网页时,浏览器都建立一个到网页服务器的连接,然后做一个"GET"的请求,以此来获得特定URL的网页内容。
服务器返回HTML的文档给浏览器,然后浏览器将其进行重新排版及显示。
Internet Standards
这些网络协议的标准都是由一个民间组织——互联网工程任务组(Internet Engineering Task Force, IETF)制定的。
而这些标准称为Request for Comments(RFCs)。
Telnet
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。
An HTTP Request in Python
import socket
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect(('data.pr4e.org', 80))
cmd = 'GET http://data.pre4e.org/romeo.txt HTTP/1.0\n\n'.ecode()
mysock.send(cmd)
while True:
data = mysock.recv(512)
if (len(data) < 1):
break
print(data.decode())
mysock.close()
而在进行上面的循环,传输回来的内容是这样的
HTTP/1.1 200 OK
Date: Sun, 14 Mar 2010 23:52:41 GMT
Server: Apache
Last-Modified: Tue, 29 Dec 2009 01:31:22 GMT
ETag: "143c1b33-a7-4b395bea"
Accept-Ranges: bytes
Content-Length: 167
Connection: close
Content-Type: text/plain
But soft what light through yonder window breaks
It is the east and Juliet is the sun
Arise fair sun and kill the envious moon
Who is already sick and pale with grief
其中第一段是HTTP Header,第二段是HTTP Body。
《Using Python to Access Web Data》 Week3 Networks and Sockets 课堂笔记的更多相关文章
- Python Web-第二周-正则表达式(Using Python to Access Web Data)
0.课程地址与说明 1.课程地址:https://www.coursera.org/learn/python-network-data/home/welcome 2.课程全名:Using Python ...
- 【Python学习笔记】Coursera课程《Using Python to Access Web Data》 密歇根大学 Charles Severance——Week6 JSON and the REST Architecture课堂笔记
Coursera课程<Using Python to Access Web Data> 密歇根大学 Week6 JSON and the REST Architecture 13.5 Ja ...
- 【Python学习笔记】Coursera课程《Using Python to Access Web Data 》 密歇根大学 Charles Severance——Week2 Regular Expressions课堂笔记
Coursera课程<Using Python to Access Web Data > 密歇根大学 Charles Severance Week2 Regular Expressions ...
- 《Using Python to Access Web Data》 Week5 Web Services and XML 课堂笔记
Coursera课程<Using Python to Access Web Data> 密歇根大学 Week5 Web Services and XML 13.1 Data on the ...
- 《Using Python to Access Web Data》Week4 Programs that Surf the Web 课堂笔记
Coursera课程<Using Python to Access Web Data> 密歇根大学 Week4 Programs that Surf the Web 12.3 Unicod ...
- Python Web-第三周-Networks and Sockets(Using Python to Access Web Data)
1.Networked Programs 1.Internet 我们现在学习Internet部分,即平时我们浏览器做的事情,之后再学习客服端这部分 2.TCP 传输控制协议 3.Socket HTTP ...
- Python Web-第六周-JSON and the REST Architecture(Using Python to Access Web Data)
1.JavaScript Object Notation JSON 1.JSON 官方介绍 http://www.json.org/json-zh.html 2.json1.py import jso ...
- Python Web-第五周-Web Services and XML(Using Python to Access Web Data)
1.Web Service Overview 1.Data on the Web Python Dictionary 和 Java HashMap间需要建立一个桥梁,可以用XML或是JSON 2.XM ...
- Python Web-第四周-Programs that Surf the Web(Using Python to Access Web Data)
1.Understanding HTML 1.最简单的爬虫 import urllib fhand=urllib.urlopen('http://www.dr-chuck.com/page1.htm' ...
随机推荐
- 分布式之redis(转发)
为什么写这篇文章? 博主的<分布式之消息队列复习精讲>得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章.但是还是要说明一下,复习精讲的文章偏面试准备,真正在开发过程中,还是脚 ...
- Java 应用中的日志
frankiegao123 芋道源码 日志在应用程序中是非常非常重要的,好的日志信息能有助于我们在程序出现 BUG 时能快速进行定位,并能找出其中的原因. 但是,很多介绍 AOP 的地方都采用日志来作 ...
- 使用Medusa美杜莎暴力破解SSH密码
使用Medusa美杜莎暴力破解SSH密码 1.Medusa简介 Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的爆力破解工具.可以同时对多个主机,用户或密码执行强力测试.Medusa和hy ...
- mongo配置
cmd下操作 cd /d E:\MongoDB\bin 创建数据库: mongod --dbpath E:\MongoDB\data\db 验证是否成功,登陆localhost:27017 进入E:\ ...
- 判断是否是iframe框架打开登录页, iframe框架着顶部页面刷新
if (window != top) top.location.href = location.href;
- Django中间件拦截未登录url
1.利用装饰器在视图中拦截未登录的url @login_required(login_url='/user/login/') def homepage(request): pass 这种方法适合于程序 ...
- Codeforces Round #427 (Div. 2) - A
题目链接:http://codeforces.com/contest/835/problem/A 题意:两个人给网站发信息,现在给出信息的长度n,两个人的延迟和打字速度(一个字符),问网站先收到哪个人 ...
- 用户界面控件Telerik UI for WinForms发布R2 2019|附下载
Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件.所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌 ...
- css3 宽度百分比减去固定宽度 无效问题
一定要注意中间横线的间距才有效果 正确 width: calc(50% - 10px); 错误 width:calc(50%-10px);
- Mac下Sublime text3无法安装Package Control及中文乱码问题
sublime text3是一款轻量级的代码编辑器,我曾在Windows下配置过,但时间久了就忘了.这次是在mac上配置,在网上查了一些帖子,有的叙述不是很清楚,故记录一下详细过程. 在线安装: ht ...