“TCP/IP协议及OSI七层模型”
TCP/IP协议及OSI七层模型
Linux网络基础知识入门

每一层都要添加头部信息
Hub集线器

- Hub:多端口中继器
- Hub并不记忆该信息包是由哪个MAC地址发出,哪个MAC地址在Hub的哪个端口
- Hub的特点:共享带宽、半双工
- 冲突域:冲突域是指在一个网络段内可能发生数据冲突的区域,而现代网络设备如交换机通过隔离冲突域,提高了网络的通信效率。
- 数据链路层
以太网桥
交换式以太网的优势
- 扩展了网络带宽
- 分割了网络冲突域,使网络冲突被限制在最小的范围内
- 交换机作为更加智能的交换设备,能够提供更多用户所要求的功能:优先级、虚拟网、远程检测…
- 广播域:一组网络设备,这些设备能够接收到同一个网络段内任何设备发送的广播帧
- 可以隔断冲突域,但是不能隔断广播域
- 数据链路层
路由器
-
分隔广播域
-
选择路由表中到达目标最好的路径(路由表)
-
维护和检查路由信息
-
连接广域网
-
1
route -n - 路由:把一个数据包从一个设备发送到不同网络里的另一个设备上去。这些工作依靠路由器来完成。路由器只关心网络的状态和决定网络中的最佳路径。路由的实现依靠路由器中的路由表来完成
VLAN
- 分割广播域
- 安全
- 灵活管理
分层的网络架构
- 核心层Core Layer :企业级应用快速转发
- 分布层Distribution Layer:广播域,路由,安全,远程接入,访问层汇聚
- 访问层Access Layer:终端接入
TCP/IP协议栈

- Transmission Control Protocol/Internet Protocol传输控制协议/因特网互联协议
- TCP/IP是一个Protocol Stack,包括TCP、IP、UDP、ICMP、RIP、TELNET、FTPSMTP、ARP等许多协议
- 最早发源于美国国防部(缩写为DoD)的因特网的前身ARPA网项目,1983年1月1日,TCP/IP取代了旧的网络控制协议NCP成为今天的互联网和局域网的基石和标准由互联网工程任务组负责维护
- 共定义了四层
- 和ISO参考模型的分层有对应关系
应用层
- FTP
- TFTP
- NFS
- SMTP
- HTTP
- HTTPS
- DNS
- POP
- IMAP
- SSH
传输层
- UDP
- TCP
| 可靠性 | 高效性 | |
|---|---|---|
| 连接形式 | 面向连接 | 无连接性 |
| 协议 | TCP | UDP |
| 测序 | 是 | 否 |
| 应用场景 | 电子邮件、文件共享、下载 | 语音流媒体、视频流媒体 |
TCP协议特性
- 工作在传输层
- 面向连接协议
- 全双工协议
- 半关闭
- 错误检查
- 将数据打包成段,排序
- 确认机制
- 数据恢复,重传
- 流量控制,滑动窗口
- 拥塞控制,慢启动和拥塞避免算法
TCP包头

TCP标记位
- URG:表示本报文段中发送的数据是否包含紧急数据。后面的紧急指针字段(urgentpointer)只有当URG=1时才有效
- ACK:表示是否前面的确认号字段是否有效。ACK=1,表示有效。只有当ACK=1时,前面的确认号字段才有效。TCP规定,连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段
- PSH:提示接收端应用程序应该立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。如果为1,则表示对方应当立即把数据提交给上层应用,而不是缓存起来,如果应用程序不将接收到的数据读走,就会一直停留在TCP接收缓冲区中
- RST:如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应带RST标志的TCP报文段称为复位报文段
- SYN:在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。只有在前两次握手中SYN才置为1,带SYN标志的TCP报文段称为同步报文段
- FIN:表示通知对方本端要关闭连接了,标记数据是否发送完毕。如果FIN=1,即告诉对方“我的数据已经发送完毕,你可以释放连接了”,带FIN标志的TCP报文段称为结束报文段
TCP三次握手

Linux网络抓包和TCP的三次握手
TCP四次挥手(断开连接时)

有限状态机
- CLOSED 没有任何连接状态
- LISTEN 侦听状态,等待来自远方TCP端口的连接请求
- SYN-SENT 在发送连接请求后,等待对方确认
- SYN-RECEIVED 在收到和发送一个连接请求后,等待对方确认
- ESTABLISHED 代表传输连接建立,双方进入数据传送状态
- FIN-WAIT-1 主动关闭,主机已发送关闭连接请求,等待对方确认
- FIN-WAIT-2 主动关闭,主机已收到对方关闭传输连接确认,等待对方发送关闭传输连接请求
- TIME-WAIT 完成双向传输连接关闭,等待所有分组消失
- CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并已确认
- LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失
- CLOSING 双方同时尝试关闭传输连接,等待对方确认
窗口大小:表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量
半连接攻击
客户机端的三次握手和四次挥手

TCP超时重传
- 异常网络状况下(开始出现超时或丢包)TCP控制数据传输以保证其承诺的可靠服务
- TCP服务必须能够重传超时时间内未收到确认的TCP报文段。为此,TCP模块为每个TCP报文段都维护一个重传定时器,该定时器在TCP报文段第一次被发送时启动。如果超时时间内未收到接收方的应答,TCP模块将重传TCP报文段并重置定时器。至于下次重传的超时时间如何选择,以及最多执行多少次重传,就是TCP的重传策略
- 与TCP超时重传相关的两个内核参数:
- /proc/sys/net/ipv4/tcp_retries1,指定在底层IP接管之前TCP最少执行的重传次数,默认值是3
- /proc/sys/net/ipv4/tcp_retries2,指定连接放弃前TCP最多可以执行的重传次数,默认值15(一般对应13~30min)
UDP
udp特性
- 工作在传输层
- 提供不可靠的网络访问
- 非面向连接协议
- 有限的错误检查
- 传输性能高
- 无数据恢复特性
网络(internet)层
- IP
- ICMP
- ARP 地址解析协议
- RARP 反向ARP
Internet协议
特征
- 运行于 OSl 网络层
- 面向无连接的协议
- 独立处理数据包
- 分层编址
- 尽力而为传输
- 无数据恢复功能
IP地址
- 它们可唯一标识IP 网络中的每台设备
- 每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
- IP地址由两部分组成:
- 网络ID:
- 标识网络
- 每个网段分配一个网络ID
- 主机ID:
- 标识单个主机
- 由组织分配给各设备
- 网络ID: