Python - Socket | TCP | SMTP

1.什么是Socket
  • Socket是网络编程的一个抽象概念。通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算机的IP地址和端口号port,再指定协议类型即可。
2.大多数链接都是可靠的TCP连接。创建TCP连接时,主动发起连接的叫客户端,被动响应连接的叫服务器。
3.如何确定服务器的端口号?
  • 作为服务器,提供什么样的服务,端口号就必须固定下来。(80端口是Web服务的标准端口、SMTP服务是25端口、FTP服务是21端口)
4.SMTP:Simple Mail Transfer Protocol - 简单邮件传输协议
5.接收从新浪服务器响应的数据
接收数据包含HTTP头部和具体数据HTML.png
6.服务器

①服务器进程首先需要绑定一个端口来监听来自其他客户端的连接。如果某个客户端连接过来了,服务器就与该客户端建立Socket连接,随后的通信就是靠这个Socket连接的。

②往往一台服务器会有大量来自客户端的连接,如何区分一个Socket连接是与哪个客户端绑定的?

  • 一个Socket由四部分组成:服务器地址、服务器端口、客户端地址、客户端端口。
7.模拟服务器和客户端
模拟服务器与客户端.png
客户端.png
8.小结

①对于客户端,要主动连接服务器的IP的指定端口;对于服务器,首先需要监听指定端口,然后,对于每一个新的连接,创建一个线程或进程来处理。
②同一个端口,被一个Sokcet绑定以后,就不能被别的Sokcet绑定了。

9.使用UDP协议时,不需要建立连接,只需知道对方的IP地址和端口号,就可以直接发送数据包。但是,能不能到达就不知道了。它的优点是速度快。
10.一封电子邮件的旅程:

发件人 -> MUA -> MTA -> 若干MTA -> MDA <- MUA -<收件人

MUA:Mail User Agent - 邮件用户代理
MTA:Mail Transfer Agent - 邮件传输代理
MDA:Mail Delivery Agent - 邮件投递代理
  • Email到达MDA后,就会静静地躺在某个服务器上,存放在某个文件或特殊的数据库里,我们将这个长期保存邮件的地方称之为电子邮箱。
  • 发邮件时,MUAMTA使用的协议是SMTP,后面的MTA到另一个MTA用的也是SMTP(Simple Mail Transfer Protocol)
  • 发邮件时,MUAMDA使用的协议有两种:POP(Post office Protocol);IMAP(Internet Message Access Protocol) - 不但能获取邮件,还能直接操作MDA上存储的邮件。
11.PythonSMTP支持有emailsmtplib两个模块,email负责构造邮件,smtplib负责发送邮件。

推荐阅读更多精彩内容