一 客户端/服务器架构
应用类:qq等应用
web类:百度网页等
c\s架构 和b\s架构,其实b\s 是c\s架构的一种
osi七层,一般来说将5、6、7看为一层
应用层 负责编辑程序等
传输层 选择通信协议tcp/udp
网络层 给上一步的消息加IP信息
数据链路层 给上一步的东西添加mac地址
物理层 通过网线 网卡的物理介质传输东西 给另一台
IP地址可以确认唯一的电脑
端口确定为一个程序
ip+端口 确认唯一机器的唯一程序
可以通过IP地址找到mac地址就是arp协议
建立连接需要三次握手
数据传输需要2次
断开连接需要4次握手
socket层
socket又叫做套接字
套接字是一种具有之前说的通信端点概念的计算机网络数据结构
网络化的程序在开始任何通讯前都必须创建套接字
套接字有两种
一种是文件型应用于同一台电脑上不同程序之间的通讯
另一种是基于网络型的 用于不同电脑
AF_INET是现存的最长用的套接字
套接字地址:主机与端口
合法的端口0~65535
小于1024的端口是系统保留端口,一般用的是8000往上,最熟悉的端口是8080
面向连接, TCP套接字, 指定套接字SOCK_STREAM 整套分块有序传输没有数据边界
无连接 UDP套接字 指定套接字为SOCK_DGRAM 数据宝套接类型的无连接套接字,无需建立连接就可以直接通讯,数据可达顺序,可靠性,不重复性无法保证,数据报是将数据整个发送,无法保证一定可以到达,但是好处是没必要维护虚拟线路等,成本低廉
socket模块函数
tcpsock = socket.socket(socket.AF_INET)
import socket tcpsock = socket.socket() tcpsock.bind((‘192.168.13.86‘,8888)) tcpsock.listen() conn,addr = tcpsock.accept() userinfo = True while userinfo !=‘bey‘: ret = conn.recv(1024).decode(‘utf-8‘) if ret == ‘bey‘: conn.close() break print(ret) userinfo = input(‘请输入代码‘) conn.send(bytes(userinfo,encoding=‘utf-8‘)) tcpsock.close() 客户端 import socket tcpsock = socket.socket() tcpsock.connect((‘127.0.0.1‘,8888)) userinfo = True while userinfo != ‘bey‘: userinfo= input(‘请输入内容‘) tcpsock.send(bytes(userinfo,encoding=‘utf-8‘)) ret = tcpsock.recv(1024).decode(‘utf-8‘) if ret == ‘bey‘: tcpsock.send(b‘bry‘) break print(ret) tcpsock.close()