C/S和B/S架构
c:client s:server 客户端,服务器,如电脑上装的qq,微信
b:browser s:server 浏览器 服务端,如京东,天猫
bs架构本质也是cs
学习网络编程为了写一个cs架构的软件
s端:
1、有固定ip
2、稳定一直在运行,支持并发
网络:网络连接介质+网络协议(osi七层)
五层协议:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
物理层:
010101电信号
数据链路层:
把物理层的电信号分组,每一组叫一个数据报/数据帧,每一数据帧分成:报头head和数据data两部分
---每一个数据报,都由报头和数据部分
---头:固定18个字节,6:发送者地址/6:接受者地址/6:数据类型
---mac地址:发送者,接受者,接受者地址,就是mac地址
--每块网卡都有一个唯一mac地址:12位16进制数表示(前六位是厂商编号,后六位是流水线号)
--同一个局域网内通信,会出现广播风暴
网络层:
---ip:ipv4:32位2进制表示:点分十进制表示从0.0.0.0到255.255.255.255,范围是有限的,不能表示出所有的网络设备,于是出现了ipv6
--子网掩码:通过子网掩码和ip判断两个ip是否处于同一网段,通过ip地址和子网掩码做按位与运算
-------ip跟mac有转换关系
主机的ip地址访问另外一个ip地址
---ARP协议广播的方式发送数据包,获取目标主句的mac地址
---mac地址学习:mac地址和ip地址的映射表
第一次接收到就会在ip/mac映射表中添加一条数据{‘1ip地址'':数据}
任何一种协议都有头和内容
传输层:
tcp协议:
三次握手,四次挥手,连接如何建立,发数据如何保证可靠,断开如何断开,在建立连接过程中有状态
服务中会看见大量的syn_rcvd状态
----dos和ddos攻击:拒绝服务攻击,分布式的拒绝服务攻击
----端口号:端口范围0-65535,0-1023为系统占用端口
udp协议:
---发送,不需要响应,所以数据不可靠
端口
---通过ip+子网掩码唯一确定一台设备
---通过ip+子网掩码+端口号唯一确定一个软件
应用层:
上网流程分析:
---在浏览器输入www.baidu.com
---会取dns服务器通过域名解析成ip地址
---向ip+端口号这个地址发送请求,就会访问到百度服务器
socket:在应用层和传输层之间的一个抽象层,它把TCP/IP它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信
在python中通过socket写一个cs架构的软件
四次挥手