五层协议:
qq.太白向强哥发送消息.‘强老板好啊‘
软件:
应用层:ftp www 软件按照自定义的协议
{msg:‘强老板好啊‘}
操作系统:
传输层:tcp协议 udp协议:端口协议
8000 | {msg:‘强老板好啊‘}
网络层:ip协议找到局域网的位置
ip | 8000 | {msg:‘强老板好啊‘}
数据链路层:对数据进行分组
mac地址 目标mac地址 数据类型 | ip | 8000 | {msg:‘强老板好啊‘}
物理层:发送高低电平
相关名词解释:
网卡:与外网连接的装置
mac地址:网卡出厂时烧制上的12位16进制的数字 前六位是厂商编号,后六位是流水号,每个mac地址都是独一无二的
交换机:连接计算机中转,
mac地址对照表,mac地址自主学习能力
ARP协议:通过ip获取对方的mac地址
单播:单独发送给对方
广播:群发
ip:网络地址,四点十进制组成
子网掩码:网络地址,四点十进制组成
ip和子网掩码能确定网关的地址
内网:路由器管理内网
DHCP协议:自动分配ip地址,子网掩码,网关ip地址
同一局域网内的所有计算机的ip地址一定不同,不同局域网内的计算机ip可以相同
内网计算机的ip都是路由器虚拟出来的
外网:发送数据
外网不是通过广播的形式发送数据,而是通过路由协议直接找到目标地址
路由器与交换节的区别:
路由器确定一个网段,网关,子网,局域网
交换节只是拓展网口的
类似于京东的外网是直接可以访问的
访问京东网址:
1.在浏览器输入域名,访问DNS服务器,获取IP地址
2.本机的操作系统会判断访问的ip地址是不是与你的ip地址属于同一个局域网
3.
如果是一个局域网:
以单播的形式将请求发送交换机,然后交换机再广播给其他交换节,其他交换节广播给计算机
如果不是一个局域网:
你的请求 源mac地址 目标mac地址 数据类型 ip地址 接口 数据:向京东发送请求
会以单播的形式发送给交换机,交换机再发送给路由器
4.路由器将会做:
利用NAT技术:将计算机的ip置换给路由器A网段的ip
静态路由:将数据从路由A传出去传给路由D
路由协议:利用算法计算出你达到目标路由的最短路径
5.数据发送到目标路由后,通过端口映射技术将数据发送到京东服务器对应的接口上
tcp的三次握手,四次挥手:
三次握手:
客户端向服务端发送建立通道请求 syn = 1 seq = x
服务端向客户端会应同意,并也请求建立通道ack = 1 +x,syn = 2,seq = y
服务端回应客户端同意:ack = 2+y
四次挥手:
客户端向服务端申请断开通道:fin = 1 syn = x
服务端回应同意:ack = 1+x
服务端向客户端申请断开通道:fin = 2 syn = y
客户端回应服务端同意:ack = 2+y
socket(套接字):
python中的socket是一个模块,与网络通信相关的模块
服务器端的代码:
import socket phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#生成一个套接字 phone.bind(‘172.0.0.1‘,8848)#绑定ip 和管道 phone.listen(5)#监听 服务器可以接收n个客户机但是一次性纸回应5个 conn,addr = phone.accept()#等待电话 接收管道和ip client_msg = conn.recv(1024)#接收数据 限制每次最多1024字节 conn.send(client_msg.upper())#回应客户机数据 conn.close()#关闭管道 phone.close()#关闭套接字
客户机代码:
import socket phone = socket.socket() phone.connect((‘192.168.16.213‘,8848)) phone.send(‘hello‘.encode(‘utf-8‘)) from_server_date = phone.recv(1024) print(from_server_date) phone.close()
服务器:
1.服务器先创建一个套接字
2.然后用bind绑定一个ip地址和端口
3.用listen函数是这个端口的和ip出于监听状态,等待客户机的连接
4.接收客户机的管道和ip
5.通过管道设置数据的大小和接收数据
6.回应客户机
7.关闭管道
8.关闭服务器
客户机:
1.通过socket建立一个套接字
2.连接到服务器connent(ip,管道)
3.发送数据 send(数据.encode(‘utf-8‘))
4.接收服务器回应的数据recv()
5.关闭客户机
原文:https://www.cnblogs.com/shicongcong0910/p/10403384.html