zoukankan      html  css  js  c++  java
  • 《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.htmhttp://是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
    
    '.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

  • 相关阅读:
    原生代码实现Promise
    HTTP与HTTPS的区别
    windows常用命令-长期更新
    git 常用命令
    原型和原型链
    vue 中一些API 或属性的常见用法
    移动端屏幕适配
    Nuxt.js(开启SSR渲染)
    vue+element-ui 实现分页(根据el-table内容变换的分页)
    vue中引入jQuery和bootstrap
  • 原文地址:https://www.cnblogs.com/IvyWong/p/9690491.html
Copyright © 2011-2022 走看看