(网络编程):协议基本概念
目录
协议
- 概念: 协议事先约定好, 大家共同遵守的一组规则, 如交通信号灯.从应用程序的角度看, 协议可理解为数据传输和数据解释的规则;可以简单的理解为各个主机之间进行通信所使用的共同语言.
- 假设,A、B双方欲传输文件。规定:
- 第一次: 传输文件名,接收方接收到文件名,应答OK给传输方;
- 第二次: 发送文件的尺寸,接收方接收到该数据再次应答一个OK;
- 第三次: 传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。
- 从A上传文件到服务器B,需要在A和B之间制定一个双方都认可的规则,这个规则就称为文件传输协议,该协议是ftp协议的一个初级版本,后经过不断的完善优化最终形成了一个完成的ftp协议。
- 注意:协议和具体平台无关
常见协议
- TCP传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
- UDP用户数据报协议(User Datagram Protocol)是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
- HTTP超文本传输协议(Hyper Text Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
- FTP文件传输协议(File Transfer Protocol)
- IP协议是因特网互联协议(Internet Protocol)
- ICMP协议是Internet控制报文协议(Internet Control Message Protocol)它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
- IGMP协议是 Internet 组管理协议(Internet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。
- ARP协议是正向地址解析协议(Address Resolution Protocol),通过已知的IP,寻找对应主机的MAC地址。
- RARP是反向地址转换协议,通过MAC地址确定IP地址。
分层模型
OSI7层模型
- 简记:物数网传会表应
- 应用层: 主要就是应用程序, ftp ssh email http
- 表示层: 进行编解码和翻译工作
- 会话层: 通过传输层建立数据传输的通道,建立会话和保持会话
- 传输层: 定义了端到端的传输, TCP UDP协议
- 网络层: 定义了点到点的传输, IP协议----路由器
- 数据链路层: 数据校验, 定义了数据格式--帧, ARP协议 RARP协议
- 物理层: 通信介质-双绞线, 光纤 调制解调器modemn(模数转换和数模转换)
TCP四层模型
- 应用层: 对应会话层,表示层和应用层
- 传输层: 对应传输层
- 网络层: 对应网络层
- 网络接口层: 对应于物理层和数据链路层
数据通信过程
- 在发送方是数据层层打包过程, 在接收方是层层解包过程
- 注意: 这些操作不是用户自己做的, 而是底层帮我们做好的.
网络应用程序的设计模式
设计模式 优点 缺点 CS设计模式
- 客户端在本机上可以保证性能, 可以将数据缓存到本地, 提高数据的传输效率, 提高用户体验效果.
- 客户端和服务端程序都是由同一个开发团队开发, 协议选择比较灵活.
- 服务器和客户端都需要开发,工作量相对较大, 调试困难, 开发周期长;
- 从用户的角度看, 需要将客户端安装到用户的主机上, 对用户主机的安 全构成威胁.
BS设计模式
- 无需安装客户端, 可以使用标准的浏览器作为客户端;
- 只需要开发服务器,工作量相对较小;
- 由于采用标准的客户端, 所以移植性好, 不受平台限制.
- 相对安全,不用安装软件
- 由于没有客户端, 数据缓冲不尽人意, 数据传输有限制, 用户体验较差;
- 通信协议选择只能使用HTTP协议,协议选择不够灵活;
以太网帧格式
- 以太网帧格式就是包装在网络接口层(数据链路层)的协议
- 以ARP为例介绍以太网帧格式
- 目的端mac地址是通过发送端发送ARP广播,接收到该ARP数据的主机先判断是否是自己的IP, 若是则应答一个ARP应答报文, 并将mac地址填入应答报文中;若目的IP不是自己的主机IP, 则直接丢弃该ARP请求报文.
- ARP协议: 通过对方的IP地址获取MAC地址
IP段格式
- 协议版本: ipv4, ipv6
- 16位总长度: 最大65536
- 8位生存时间ttl(网络连接下一跳的次数): 为了防止网络阻塞
- 32位源ip地址, 共个4字节;我们熟悉的ip都是点分十进制的,4字节, 每字节对应一个点分位,最大为255 ,实际上就是整形数。
- 32位目的ip地址
- 8位协议: 用来区分上层协议是TCP, UDP, ICMP还是IGMP协议.
- 16位首部校验和: 只校验IP首部, 数据的校验由更高层协议负责.
UDP数据报格式
- 通过IP地址来确定网络环境中的唯一的一台主机;
- 主机上使用端口号来区分不同的应用程序
- IP+端口唯一确定唯一一台主机上的一个应用程序
TCP数据流格式
- TCP协议:稳定的, 安全的, 可靠的
- 序号: TCP是安全可靠的, 每个数据包都带有序号, 当数据包丢失的时候, 需要重传, 要使用序号进行重传. 控制数据有序, 丢包重传.
- 确认序号: 使用确认序号可以知道对方是否已经收到了, 通过确认序号可以知道哪个序号的数据需要重传.
- 16位窗口大小--滑动窗口(主要进行流量控制)
小结
- IP协议:在网络层
- TCP协议:面向连接的, 安全的,可靠的数据流传输协议.
- UDP协议:面向无连接的, 不安全的,不可靠的数据报传输.