TCP/IP
ip地址
对应的实际上就是计算机的网络接口,通常是网卡
通讯的时候,双方必须知道对方的一个标识,并且这些标识必须是唯一的,互联网上每个计算机唯一的标识就是IP地址,如果一个计算机连接了多个网络,那么他便有多个ip地址。
就好比两个人需要互相交流,需要知道对方的标识,即对方的名字或者身份证,并且名字唯一的,通过名字就能准确的找到这个人进行交流。
ip协议
IP协议负责把数据从一台电脑通过网络发送到另一台电脑,发送的时候,我们的数据被分割成一小块,一小块的,然后通过IP包发送出去,IP包的特点就是按块发送,它不保证到达也不保证顺序到达。
TCP协议
TCP协议则是建立在IP协议的基础之上的,TCP协议负责在两台计算机之间建立可靠连接,保证数据包按顺序到达,TCP协议会通过握手建立连接,然后对每个IP包进行编号,确保对方按顺序收到,若是包丢掉了就自动重发。
端口
端口:在两台计算机通信时,只发送IP是不够的,因为一台电脑上可能执行多个网络程序,一个TCP报文来了之后,应该交给哪个程序来处理,这个就需要使用端口号来进行区分,每个网络程序都向操作系统申请了一个唯一的端口号。1024
三次握手与四次挥手
掌握:
TCP/IP协议 IP地址 端口 三次握手四次挥手
三次握手刚好能够创建一个可靠连接。
记住: ip协议,TCP协议,端口,网卡,三次握手与四次挥手
三次握手
四次挥手
TCP编程服务器代码
TCP服务器的书写
import socket 导入模块
创建scocket对象
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
参数一:指定的ip协议 iPv4协议
参数二:指定的tcp协议
创建连接
sock.connect((域名),80)
address地址 ,以元组的形式传递,要求就括号
域名/ip地址 端口号 小于1024端口号是internet标准服务端口
网页的端口 80
STMP服务端口 25
发送请求,要求发送的数据必须是二进制的
sock.send()
读取数据
while 1:
date = b“”
strb = sock.recv(1024)
if strb == b“”:
break
date += strb
sock.close()
TCP客户端的编写
导入socket模块
创建socket对象
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
参数一:指定ip协议
参数二:指定tcp协议
绑定地址
元组,ip地址以及端口号
sock.bind(元组)
限制,设置最大连接数
sock.listen(6)
while True:
接收客户端链接
s ,address = sock.accept()
s.send(b"world")
udp编程服务器代码
udp服务器
import socke
创建sock对象
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
参数一:指定ip协议
参数二:指定udp协议
绑定地址,地址包括ip地址及端口号
sock.blind(())
while 1:
data,address = sock.recvfrom(1024)
sock.sendto(“shoudao”.encode(“utf-8”),address)
udp客户端
创建sock对象
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
参数一:指定ip协议
参数二:指定udp协议
s.sendto(b"hello",(地址))
print(s.recv(1024))
s.close()
发邮件
登录163邮箱 —> 设置 —>POP3/SMTP/IMAP —>客户端授权密码 —>开启 —> 重置授权码
注意: 授权码尽量和邮件的登录密码不同[],将下面的password改为授权码
若要发邮件首先需要知道:
服务器地址,发送邮箱地址,发送邮箱密码,要发送的内容,对方的邮箱地址
关于邮件:标题,发送者
打开服务连接-》登录邮箱-》发送邮件-》退出邮箱
#发邮件的库
import smtplib
#邮件文本
from email.mime.text import MIMEText
#SMTP服务器
SMTPServer = 'smtp.163.com'
#发邮箱的地址
sender = '[email protected]'
#发送者邮箱密码:授权码
password = '1q2w3e'
#设置发送文本的内容
message = 'hello world'
#转为邮件文本
msg = MIMEText(message)
#标题
msg['Subject'] = '来自星星的我'
#发送者
msg['From'] = sender
#收件人
msg['To'] ='[email protected]'
#打开SMTP服务器,端口号一般为25
mailServer = smtplib.SMTP(SMTPServer,25)
#登录邮箱
mailServer.login(sender,password)
#发送邮件
mailServer.sendmail(sender,['[email protected]'],msg.as_string())
#退出邮箱
mailserver.quit()
说明:有时候会被识别为垃圾邮件[其他邮箱都可以用,只要找到授权码即可]