一. 网络应用程序设计模式
C/S - client/server 协议灵活, 可缓存数据, 但是开发量大
B/S - browser/server 跨平台, 但是协议单一http/https
二. 协议概念: 数据传输和数据解释的规则, 典型协议: TCP/UDP, http, FTP, IP, ARP
socket 并不是协议, 可以理解为网络接口, 但是里边封装的有协议(TCP/UDP传输层协议)
三. 分层模型
- osi 7层
从下往上: 1.物理层 2.数据链路层 3.网络层(用的最多的是IP协议) 4.传输层(用的多的tcp/udp), 5.会话层, 6.表示层, 7.应用层(用的多的是http, ftp, ssh) - tcp/ip 4层, 开发人员只做应用层的处理, 其他的内核处理
从下往上:
1.网络接口/数据链路层: 物理层, 数据链路层; 该层对应的以太网帧协议
2.网络层: 网络层(用的最多的是IP协议)
3.传输层: 传输层(用的多的tcp/udp)
4.应用层: 会话层, 表示层, 应用层(用的多的是http, ftp, ssh)
四. 协议介绍
(1) 以太网帧协议(处于物理层, 发送数据时封装在最外层的), 有系统内核处理; 原理: 需要找到对方的mac地址, 然后通信, 所以需要使用ARP协议(通过IP)先发送一个请求的ARP数据包;
不知道的地址,则填ff:ff:ff:ff:ff:ff
对方收到请求之后回复, 此时对方会将数据填进去
之后在通信时, 帧类型0800即可通信
(2) 网络层协议, 这里介绍IP协议, 目前使用的是ipv4, 数据包最多条256次
(3) 传输层协议(udp/tcp)
net映射: http://www.cnblogs.com/OpenCoder/diary/2011/06/29/2093895.html
打洞机制: 比如语音聊天, 两个客户端不能直接通信, 因为路由保护, 但是他们都认识一个服务器, 此时服务器会将两者连接起来, 这种模式即为打洞机制.