1.应用层:
应用层功能:规定应用程序的数据格式。
例:TCP协议可以为各种各样的程序传递数据,比如Email、WWW、FTP等等。那么,必须有不同协议规定电子邮件、网页、FTP数据的格式,这些应用程序协议就构成了”应用层”。
2.传输层:
传输层功能:建立端口到端口的通信
补充:端口范围0-65535,0-1023为系统占用端口
tcp协议:
可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割
3.osi七层协议
4.TCP三次握手四次挥手:
5 基于套接字通信:
5.1:tcp协议服务端:
'''
服务端应该满足的特点:
1.一直提供服务
2.并发的提供服务
'''
import socket
#1.买手机
# phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #流式协议--> tcp协议
phone = socket.socket() #默认是TCP协议
# 2.绑定手机卡
# 0.0.0.0 ----> 代表允许任何的ip链接
phone.bind(('127.0.0.1',8080)) #ip+端口(0-65535)1024以前的都被系统保留使用
#3.开机 (监听状态)
phone.listen(5) #5指的是半连接池大小
#4.等待电话连接请求:拿到电话连接conn
#加上链接循环
while True:
conn,client_addr = phone.accept() #接受,程序启动后,会在accept这里夯住,阻塞
print(conn) #连接对象,三次握手的双向通路
print('客户端的ip和端口:',client_addr)
while True:
try:
#5.通信:收/发消息
data = conn.recv(1024) #最大接受的数据量为1024Bytes,收到的是bytes类型
if len(data) == 0:
# 针对unix系统里,一旦data收到为空
# 意味着是一种异常的行为:客户非法断开链接
break
print('客户端发来的消息:',data.decode('utf8'))
conn.send(data.upper())
except Exception:
#针对windows系统
break
#6.关闭电话连接comm
conn.close()
#7.关机(可选操作)
# phone.close()
tcp协议客户端:
import socket
#1.买手机 sokcet类 地址家族
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #流式协议--> tcp协议
#2.拨通服务端电话
phone.connect(('127.0.0.1',8080)) #进行3次握手
while True:
msg = input('输入要发送的消息:').strip()
if len(msg) == 0:continue #解决输入空格的bug
if msg == 'quit':
break
# 3.通信
phone.send(msg.encode('utf8')) #编码以二进制的形式发送
data = phone.recv(1024)
print(data.decode('utf8')) #解码
#4.关机连接(必选的回收资源的操作)
phone.close()
5.2udp协议服务端(用在对实时性要求很高的程序上面)
import socket
sever = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #udp协议
sever.bind(('127.0.0.1',8081))
while True:
data,client_addr = sever.recvfrom(1024)
sever.sendto(data.upper(),client_addr)
sever.close()
udp协议客户端
import socket
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #udp协议
while True:
msg = input('输入要发送的消息:').strip()
client.sendto((msg.encode('utf8')),('127.0.0.1',8081))
res = client.recvfrom(1024)
print(res)
client.close()
标签:网络通信,协议,socket,TCP,phone,client,接字,data From: https://www.cnblogs.com/whxx/p/17266336.html