Linux网络编程_01_网络协议基础、TCP、UDP、常用网络术语
网络协议基础
协议的概念:从应用的角度出发,协议可理解为“规则”,是数据传输和数据的解释的规则。
原始协议(两人之间私下约定应用,雏形)———多人采用完善———> 标准协议(修改成完善体系)
最早的ftp协议就是由此衍生而来
层次 | 典型协议 |
应用层 | HTTP协议、FTP协议 |
传输层 | TCP协议、UDP协议 |
网络层 | IP协议、ICMP协议、IGMP协议 |
网络接口层 | ARP协议、RARP协议 |
网络应用模式:
C/S模式:客户机(client)/服务器(server)模式,客户端和服务端之间的通讯
C/S模式,数据缓存在本地主机,数据传输稳定并且效率较高,但于用户有安全隐患,于程序员开发客户端和服务端有较大工作量
B/S模式:浏览器(browser)/服务器(server)模式,浏览器和服务器之间的通讯
B/S模式,数据不需要缓存在本地,可移植性好,但传输速率一般,于用户不适合大型任务,于程序员主要可if服务端,开发任务较小
物理模型:
1、物理层:物理设备(网线接口内容、光纤几口类型、各种传输介质属性)标准协议,“比特”传输,数模转换(1、0高低电流)(网卡,网线,集线器,中继器,调制解调器)
2、数据链路层:指定定义格式化数据如何以帧传输,控制物理介质(驱动程序),并且在底层进行简单二进制数据校验,数据”帧“传输(交换机、网桥)
3、网络层:控制和提供不同主机之间的连接和路径选择,数据分组数据“包”,也叫IP数据报(路由器)
4、传输层:定义数据传输的协议和端口号,主要进行分段和传输,这层数据叫数据“段”
5、会话层:通过传输层(端口号),与操作系统发起回话请求,数据为报文
6、表示层:确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取,进行数据格式化和解码加密服务,数据为报文
7、应用层:容纳应用程序,直接面向用户
传输层往下由内核提供控制,应用层则是有用户进程控制
想让数据进入网络进行传输,必须对数据包进行封装
数据包逐层封装(操作系统完成):应用层协议、传输层协议、网络层协议、以太网帧头加帧尾、
路由器寻址:
网状寻路:数据包选择路径的过程,路太多了,交至成网状(借助路由器内部的路由表来寻ip地址)
经由的路由器被称为一个结点,这个结点(路由器)内部的路由表作为地图,数据包根据自己的封装信息以路由表为地图来寻找路径和下一结点
TCP协议内部描述了具体的寻路细节,只有第一段数据包寻路,只寻路一次,一旦成功,后面的数据包不再重新寻路,即按照”前辈“的路走,因此是稳定的
UDP协议内部则机制不同,UDP规定每一段数据包均要自己独立寻路,这就导致可能数据包们的路走的不一样,会有不少走错路或者绕远路的数据包,因此UDP是不稳定的,无法保证所有数据包成功到达,可能有一些会半路失踪
以太网帧格式:
以太网帧格式是数据封装的最下层;
目的地址(硬件MAC地址) | 源地址(硬件MAC地址) | 类型 | 数据 | CRC |
6字节 | 6字节 | 2字节 | 46字节-1500字节 | 4字节 |
MAC地址是硬件网卡的编号,唯一标识每一个网卡(主机),就像居民身份证号码,MAC地址长度为48位,是网卡出厂时固话的
类型标识决定发送不同的数据包类型;比如ARP类型是0806
数据至少48字节:ARP(RARP) 28+ PD(填充)18
协议三种值:IP、ARP、RARP、CRC(校验码)
ARP协议格式:
下一路由可称为当前路由的下一跳,每经历一个路由就会经历一次解封装,在重新封装的过程,只不过不是完全,而是部分。