网络=底层的物理连接介质+互联网协议(就是计算机界的英语) OSI七层 应用层(应用层\表示层\会话层):http,ftp 传输层:tcp/udp 网络层:ip 数据链路层:ethernet 物理层:发送电信号
1、 互联网协议,可看作是一个安装在计算机上的包
2、 交换机:有mac地址学习功能
3、 ARP(地址解析协议),可将IP地址转成mac地址,mac地址转成IP地址
4、 IP+端口可锁定一架计算机上的某个应用程序
5、 IP 和子网掩码-》局域网地址(子网地址)
6、 TCD又称好人协议,可靠协议,需要三次握手建立链接
7、 标志位:sgn=1请求信息,ack=1 确认信息,seq=’ ’序列号,ack=1+x(序列号)
8、 在创建链接时如果并发少,基本看不多SYN—REVD。但如若受到洪水攻击(高并发)系统会出现SYN—REVD状态
9、 TCD需要四次挥手以断链接。谁先发完信息,谁先发出断链接请求。通常是SERVER端先发出,但不一定。
10、fin=1 断链接请求,ack=1 确认信息
11、Fin_WAIT_1 为主动断链接的一方
12、在断链接时如果并发少,基本看不多TIME—WAIT。但如若高并发,系统会出现TIME—WAIT状态,需要监查内存
13、TCP,需要建链接,又称可靠传输,相对安全但效率低,一般用于转账
14、UDP,不需要建链接,又称不可靠传输,效率高,但安全性较低,一般用于聊天(QQ)和查询
15、套接字有被称作IP和端口
16、AF_INET (AF:address family 套接字类型,INET:基于网络)
17、TCP 被称为流式协议,SOCK_STREAM
18、UDP 被称为数据报协议,SOCK_DGRAM
19、127.0.0.1 指本机,主要用于调试
20、端口0-65535,0-1024被系统使用,其他号码可选用
21、phone.listen(5): 5指的是同时最多可以用多少个请求,而不是连接数
22、conn.recv(1024):1024为最大限制的字节数
23、conn为套接字对象,为三次握手的产物,可收可发
24、conn.close():回收系统资源
服务端:
import socket #1.买手机phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #SOCK_STEAM=>TCP流式协议,print(phone) #是用来接收链接请求,从而建立链接的 # phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM)# print(phone) #2.插手机卡phone.bind((‘127.0.0.1‘,8080)) #0-65535 #3.开机phone.listen(5) # 同一时刻最大请求数为5个 print(‘start....‘)#4.等待电话请求conn,client_addr=phone.accept() #(双向链接的套接字对象,存放客户端ip和端口的小元组)# print(conn) # conn代表双向链接,用来收发消息# print(client_addr) #5.收\发消息data=conn.recv(1024) #1024接收的最大字节数bytesprint(‘收到客户的数据‘,data)conn.send(data.upper()) #6.挂电话链接conn.close() #7.关机phone.close()
客户端:
import socket #1.买手机phone=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #SOCK_STEAM=>TCP流式协议, #2.拨号phone.connect((‘127.0.0.1‘,8080)) #3.发\收消息phone.send(‘hello‘.encode(‘utf-8‘)) # 只能发bytes类型data=phone.recv(1024)print(‘收到服务端的消息: ‘,data) #4.挂电话链接phone.close()
原文地址:https://www.cnblogs.com/huangchaonan/p/9556644.html