网络应用程序设计模式
1.C/S-client/server
优点:协议选用灵活/缺点:不安全,可以修改用户电脑
2.B/S-browser/server
优点:跨平台/缺点:只能使用http
网络模型图:
7层OSI模型
物:光纤
数:数据的传输和错误检测
网:路由选择
传:udp/tcp
会:接触或建立关系
表:格式转换加密解密
应:ftp/http
链路层:以太网
以太网帧格式:借助mac地址完成数据包传递
mac地址就是网卡的编号,网卡编号是唯一的(由厂家设定)
由于网络中不知道对方的mac地址,需要通过ip获取,这时候要用到arp协议,发送arp数据包
A给B发送ARP协议,带上自己的IP和MAC地址,以及B的IP地址
B接收到ARP协议后,发送自己的IP和MAC地址,以及A的IP和MAC地址
网络层:IP协议
IP协议和IP地址不同
4位版本号:ipv4/ipv6
8位生存时间(TTL):最多能经过多少跳(经过几个路由器,最多256个)
32位源IP地址:发送
32位目的IP地址:接收
DNS域名解析服务器,通过域名拿到IP地址
传输层(TCP/UDP)
UDP协议
使用场景:实时性要求比较高
1.视频聊天
2.通话
3.有实力的公司比如微信,qq,先使用udp,在应用层定义协议,做数据校验
UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
如果想避免丢失的情况,需要在应用层进行封装
16位源端口:
16位目的端口:
进程
1.进程id
2.网络环境中:
1)IP-定位一台主机
2)Port-定位一个进程,16位,最多65535个端口
TCP协议
使用场景:对数据安全要求高
1.网页登录数据
2.文件传输
面向连接的
1.连接时,三次握手
2.发送数据时:进行数据确认(丢失,会重传&管道传输)
标志位:
SYN:请求建立链接
ACK:应答
FIN:断开链接
第一次握手
客户端:携带标志位SYN,随机32位序号
服务端:检测SYN是否为1
第二次握手
服务器:
- 携带标志位ACK,客户端随机32位序号+1
- SYN+32随机序号
客户端:
检测标志位
第三次握手:
客户端:ACK-确认序号(随机序号+1)
服务端:检测ACK-校验确认序号
第一次挥手:
客户端:1.FIN+序号 2.ACk+序号
服务端:1.检测FIN 2.ACK之前发的数据发送多少
第二次挥手:
服务器:1.ACK+确认序号
客户端:检测ACK
第三次挥手:
服务端:1.FIN+序号 2.ACK+序号
客户端:检测ACK
第四次挥手:
客户端:
服务端:
IP地址
ip地址
IP地址包括:网络号和主机号
A类:网络号7位,主机号24位
B类:网络号14位,主机号16位
C类:网络号21位,主机号8位
C类IP地址,一个网段最多可以容纳256-2台电脑,192.168.1.0代表网络号
192.168.1.255代表广播地址
区分各类地址的最简单的方法是看它的第一个十进制整数。
集线器收到的数据包都会以广播的形式发送,交换机有学习功能,可以记住mac地址
路由器:连接不同的网络,有两个网卡,不同的网卡连接不同的网络,网卡在各自不同的网络中具有该网络的ip既网关。路由之间通过mac地址来确定消息的发送方向
给路由器设置寻路规则
arp:根据IP找电脑的MAC地址
rarp:根据MAC地址找ip
DNS:协议
实际地址:也叫MAC地址,6组16进制表示
前三节是厂商地址,后面3节是网卡的序列号
标记实际转发数据时的设备地址
IP地址子:
标记逻辑上的地址
子网掩码:
和ip地址一起来确定网络号
默认网关:
发送的ip不在同一个网段内,那么会把这个数据转发给默认网关
DNS服务器:
解析域名,使用DNS协议
端口
用来标记一个进程(不能用pid来标记,因为pid在多个系统上可能不同),每个软件启动的时候都会开启一个端口,不同的系统中端口是一个。
端口号0~65535(2的16次方)
知名端口(Well Konwn Ports): 0~1023
80端口分配给HTTP服务
21端口分配给FTP服务
动态端口(Dynamic Ports): 1024~65535
不知名的进程可以申请端口,比如SQL
netstat -an # 统计当前的端口信息
在/etc/services中可以查看各个端口提供的服务
参考文献:
TCP-IP详解卷1:协议