第1章 概念介绍

1.1 VLAN

1.1.1 什么是VLAN

  VLAN(Virtual LAN),翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。

1.1.2 划分VLAN的目的

1. 提高安全性
举个例子:没有划分VLAN前,交换机端口连接下的所有PC都处于一个VLAN中即一个广播域中,实现ARP中间人攻击太简单了.划分了VLAN之后,缩小了ARP攻击的范围.ARP报文是一个2.5层的报文,只能在同一个VLAN中传播.
2. 提高性能
不划分VLAN,整个交换机都处于一个广播域,随便一台PC发送的广播报文都能传送整个广域播,占用了很多带宽.划分了VLAN,缩小的广播域的大小,缩小了广播报文能够到达的范围.

1.1.3 vlan 配置

创建vlan 20

  1. Switch(config)#vlan 20
  2. Switch(config-vlan)#name test #给vlan命名
  3. Switch(config-vlan)#exit

进入端口将端口分配到vlan 20

  1. Switch(config)#interface FastEthernet 0/1
  2. Switch(config-if)#switchport access vlan 20

查看vlan的信息

  1. Switch#show vlan brief
  2. VLAN Name Status Ports
  3. ---- -------------------------------- --------- -------------------------------
  4. 1 default active Fa0/2, Fa0/3, Fa0/4, Fa0/5
  5. Fa0/6, Fa0/7, Fa0/8, Fa0/9
  6. Fa0/10, Fa0/11, Fa0/12, Fa0/13
  7. Fa0/14, Fa0/15, Fa0/16, Fa0/17
  8. Fa0/18, Fa0/19, Fa0/20, Fa0/21
  9. Fa0/22, Fa0/23, Fa0/24
  10. 20 test active Fa0/1
  11. 1002 fddi-default active
  12. 1003 token-ring-default active
  13. 1004 fddinet-default active
  14. 1005 trnet-default active

1.2 DoD参考模型

在OSI 7层模型的基础上进行了精简和优化,产生了DoD参考模型
TCP/IP 协议簇 端口 三次握手 四次挥手 11种状态集 - 图1

1.3 TCP/IP 协议簇

1.3.1 组成

TCP/IP协议簇是Internet的基础,也是当今最流行的组网形式。TCP/IP是一组协议的代名词,包括许多别的协议,组成了TCP/IP协议簇。其中比较重要的有SLIP协议、PPP协议、IP协议、ICMP协议、ARP协议、TCP协议、UDP协议、FTP协议、DNS协议、SMTP协议等。

1.3.2 tcp/ip协议簇中相关协议

TCP/IP 协议簇 端口 三次握手 四次挥手 11种状态集 - 图2

1.3.3 协议名称与对应端口号

协议名称 中文释义 协议端口
FTP协议 文件传输协议 21
SSH协议 安全 Shell(SSH)服务 22
Telnet协议 远程登陆服务的标准协议 23
SMTP协议 简单邮件传输协议 25(UDP)
DHCP协议 动态主机配置协议 67 68(UDP)
TFTP协议 简单文件传输协议 69
HTTP协议 超文本传输协议 80/8080
POP3协议 邮局协议版本3 110
rpc协议 远程过程调用协议 111
SNMP协议 简单网络管理协议 161
NFS协议 网络文件系统  

1.3.4 端口号

标示协议信息,便于计算机之间进行识别
0 号端口在udp和tcp 中都不会使用。

1.4 TCP 与UDP

TCP (传输控制协议)面向连接的网络协议
UDP (用户报文协议)面向无连接的网络协议

1.4.1 TCP与UDP 协议对比:

传输控制协议(TCP) 用户数据报协议(UDP)
面向连接 无连接
可靠传输 不可靠传输
流控 尽力而为,尽力传递
使用TCP应用:
WEB浏览器;电子邮件;文件传输服务
使用UDP的应用:
域名系统 (DNS);视频流;ip语音(VoIP)

1.5 TCP报文的结构

TCP/IP 协议簇 端口 三次握手 四次挥手 11种状态集 - 图3

1.5.1 确认字段ACK

当ACK=1时,表示确认,且确认号有效;当ACK=0时,确认号字段无效

1.5.2 请求连接字段 SYN

当SYN=1时,表示发起一个连接请求。

1.5.3 断开连接字段FIN

用来释放连接。当FIN=1时,表明此报文段的发送端的数据已发送完成,并要求释放连接。

1.5.4 序号

每一个TCP报文段都会有一个序号,序号字段的值其实是本报文段所发送的数据的第一个字节的序号。
这是因为TCP是面向连接的可靠服务,其每一个字节都会对应一个序号,通过序号来确保服务的可靠性和有序性。

1.5.5 确认号

确认号,是期望收到对方的下一个报文段的数据的第一个字节的序号。

1.5.5.1 序号与确认号

发送端发送一个seq序列号x,接收端需要回复一个确认号x+1,并发送一个序列号Y 发送端接收一个seq序列号y,接收端需要回复一个确认号y+1

第2章 三次握手与四次挥手

2.1 三次握手

TCP/IP 协议簇 端口 三次握手 四次挥手 11种状态集 - 图4

2.1.1 含义

(1)客户 端发送一个带SYN标志的TCP报文到服务器。
(2) 服务器端回应客户端的,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。
(3) 客户必须再次回应服务段一个ACK报文。

2.1.2 五种状态

LISTEN 侦听来自远方TCP端口的连接请求;
SYN-SENT 在发送连接请求后等待匹配的连接请求;
SYN-RECEIVED 在收到和发送一个连接请求后等待对连接请求的确认
ESTABLISHED 代表一个打开的连接,数据可以传送给用户;
CLOSED 没有任何连接状态;

2.2 四次挥手

2.2.1 文字说明

(1) TCP客 户端发送一个FIN,用来关闭客户到服务器的数据传送。
(2) 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一 样,一个FIN将占用一个序号。
(3) 服务器关闭客户端的连接,发送一个FIN给客户端。
(4) 客户段发回ACK报文确认,并将确认序号设置为收到序号加1。

2.2.2 一形态

TCP/IP 协议簇 端口 三次握手 四次挥手 11种状态集 - 图5

2.2.3 在四次握手中的状态集

ESTABLISHED 代表一个打开的连接,数据可以传送给用户;
FIN-WAIT1 等待远程TCP的连接中断请求,或先前的连接中断请求的确认;
FIN-WAIT2 从远程TCP等待连接中断请求;
CLOSE-WAIT 等待从本地用户发来的连接中断请求;
CLOSING 等待远程TCP对连接中断的确认;
LAST-ACK 等待原来发向远程TCP的连接中断请求的确认;
TIME-WAIT 等待足够的时间以确保远程TCP接收到连接中断请求的确认;
CLOSED 没有任何连接状态;

2.2.4 第二种形态(CLOSING)

TCP/IP 协议簇 端口 三次握手 四次挥手 11种状态集 - 图6

2.3 十一种状态集

TCP/IP 协议簇 端口 三次握手 四次挥手 11种状态集 - 图7

2.4 随机端口号范围(/proc/sys/net/ipv4/ip_local_port_range 文件)

  1. [root@clsn ~]# cat /proc/sys/net/ipv4/ip_local_port_range
  2. 32768 60999

2.5 socket 监听

2.5.1 监听状态

  1. [root@clsn ~]# netstat -lntup|grep sshd
  2. tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1140/sshd
  3. tcp 0 0 :::22 :::* LISTEN 1140/sshd
  4. [root@clsn ~]# netstat -an|grep ES
  5. tcp 0 64 10.0.0.201:22 10.0.0.1:3868 ESTABLISHED

2.5.2 socket 条目 五元组概念

1、协议 tcp udp
2、目标ip地址
3、目标主机端口号
4、源ip地址
5、源端口号

2.6 ssh服务关闭 为什么连接不断

  1. [root@clsn ~]# ps -ef |grep sshd
  2. root 1140 1 0 Sep25 ? 00:00:00 /usr/sbin/sshd
  3. root 5861 1140 0 11:40 ? 00:00:00 sshd: root@pts/0
  4. root 5881 5863 0 11:40 pts/0 00:00:00 grep --color=auto sshd
  5. [root@clsn ~]# /etc/init.d/sshd stop
  6. Stopping sshd: [ OK ]
  7. [root@clsn ~]# ps -ef |grep sshd
  8. root 5861 1 0 11:40 ? 00:00:00 sshd: root@pts/0
  9. root 5899 5863 0 11:41 pts/0 00:00:00 grep --color=auto sshd

因为有一个连接的进程存在。
没有进程就会断开。

2.7 网络中的滑动窗口

原理:
TCP使用窗口机制进行流量控制。当连接建立后,发送方和接收方都要分配一块自己的缓冲区来存储接收的数据,为了防止就收方已经没有缓冲区进行接收而发送方在在继续发送,出现网络拥塞和故障。所以用滑动窗口进行了流控。
具体实现:
接收方将缓冲区剩余的尺寸和期待接收的下一个字节序号在确认信息中发送给发送方,发送方根据接收方剩余的大小空间来定量的发送合适的数据给接收方。它也是建立在“确认重传”的基础之上。

2.8 网络中迷途情况

前一个连接没有及时到达,新的连接又产生。