记录自己学习HCIA-811的笔记,总感觉自己的笔记做的不怎么好,望同学们可以指点一二!
网络就是为了通信。
通信要满足以下五点:
- 发送者
- 接收者
- 介质
- 数据
- 协议(二者想要通信必须满足一定的条件)
TCP/IP模型
- 应用层
- 应用层:提供一些协议共给应用层更好的通信,如:HTTP(80端口),Telent(23端口),SSH(22端口)等
- 表示层:对数据进行编译,比如:加密、解密
- 会话层:建立会话,保持会话,释放会话
- 传输层
- 为应用层提供服务
- 提供面向连接和非面向连接的数据传输以及重传之前的差错检测
- TCP协议
- 三次握手建立连接
-
客户端发送SYN(同步请求),seq=a(序列号),打包发送给服务端。
-
服务端收到客户端发来的包之后,会给客户端发送一个ACK确认同步请求以及SYN。
-
客户端收到之后,给服务端发送一个ACK进行确认,客户端收到之后此时三次握手结束,连接建立成功,双方可以进行通信。
- 注:三次握手建立过程缺一不可,假设第三次握手客户端不进行确认,那么服务端会将请求挂起等待客户端确认,如此会占用服务器性能。
-
- 滑动窗口
- 协商机制:发送者可以一次性发送多个数据包,但这需要进行协商,假设第一次发送10个包,接收方可以手下,第二次发送50个包,接收方接受不了,那么就知道了一次性发50个包不行,再试试一次性发49个包以此类推。
- 缓存:假设客户端发送10个包,中途丢失的包为1005,那么服务端会发送ACK=1005给客户端,代表1005之前的包收到了,但1005包没有收到,需要从1005包开始重新发送。
- 通信阶段
- 客户端发送SYN=100,服务端回复ACK=1+SYN=101
- 客户端收到后发送SYN=101,服务端收到后回复ACK=102,以此类推
- 四次挥手机制(结束通信)
- 客户端给服务端发送终止通信请求,此时客户端不能再发送数据给服务端
- 服务端接收到之后给客户端发送一个ACK包,此时进入半关闭状态,但是由于一些数据还没有发送完成,服务端还得继续发送数据(客户端需要接收)
- 服务端发送完数据之后会发送一个终止请求
- 客户端收到之后,发送ACK服务端,服务端确认后连接关闭。
- TCP报文头部
- 三次握手建立连接
- UDP协议
- UDP协议传输速度快,但质量无法保证,因此需要借助人工和应用程序来保证质量。
- UDP协议发送的数据是无序的,因此需要应用程序提供报文确认、排序和流量控制等待。
- 网络层
- 提供逻辑地址(IP地址)
- 通过IP地址寻找广播域
- ICMP协议(Internet控制报文协议)
- 测试网络连通性
- 通过ICMP echo request/ICMP echo reply报文来查询或相应信息,进行差错检测
- 网络接口层
- 数据链路层
- 以太网使用MAC地址来访问介质并进行差错检测
- 以太网:多路访问,可以同时接入多个设备,以太网接口均为全双工
- 全双工:既可以发送流量也可以接收流量
- 控制数据帧在物理介质上传输
- Ethernet_II帧格式
- 值大于1536(0x0600)
- 帧长度在64~1518字节之间(8bit = 1byte)
- 物理层
- 最终数据传输是通过该层的实现,通过物理介质传输比特流
- 常用物理介质:双绞线,光纤,网线,同轴电缆
- 网线传输速率可达10Gbps,光纤可达40~100Gbps,网线的材质是铜(贵),光纤的材质是玻璃纤维(便宜),光纤是目前传输速率最快的介质
- 数据链路层