1、简述TCP三次握手
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.、
第一次握手:客户端的应用进程主动打开,并向客户端发出请求报文段。其首部中:SYN=1,seq=x,并进入SYN_SEND状态,等待服务器确认。
第二次握手:服务器应用进程被动打开,处于监听状态。若同意客户端的请求,则发回确认报文,其首部中:SYN=1,ACK=1,ack=x+1,seq=y,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到确认报文之后,通知上层应用进程连接已建立,ESTABLISHED状态,并向服务器发出确认报文,其首部:ACK=1,ack=y+1。当服务器收到客户端的确认报文之后,也通知其上层应用进程连接已建立,进入ESTABLISHED状态,完成三次握手。
在这个过程中,通信双方的状态如下图,其中CLOSED:关闭状态、LISTEN:监听状态、SYN-SENT:同步已发送、SYN-RCVD:同步收到、ESTAB-LISHED:连接已建立
2、简述TCP和UDP的区别
1. TCP的特性
1、工作在传输层
2、面向连接协议
3、全双工协议
4、半关闭
5、错误检查
6、将数据打包成段,排序
7、确认机制
8、数据恢复,重传
9、流量控制,滑动窗口
10、拥塞控制,慢启动和拥塞避免算法
TCP是面向连接的通讯协议,通过三次握手建立连接,通讯完成时四次挥手
优点:TCP在数据传递时,有确认、窗口、重传、阻塞等控制机制,能保证数据正确性,较为可靠。
缺点:TCP相对于UDP速度慢一点,要求系统资源较多
2. UDP特性
1、工作在传输层
2、提供不可靠的网络访问
3、非面向连接协议
4、有限的错误检查
5、传输性能高
6、无数据恢复特性
UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息。
优点:UDP速度快、操作简单、要求系统资源较少,由于通讯不需要连接,可以实现广播发送
缺点:UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,也不重复发送,不可靠。
3、总结IP地址规划。
IP地址可唯一标识 IP 网络中的每台设备,每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
1、IP地址由两部分组成:
网络ID:
标识网络
每个网段分配一个网络ID
主机 ID:
标识单个主机
由组织分配给各设备
2、IP地址的分类
A类:
A类网络的前8位表示网络ID,后24位表示主机ID
0 000 0000 - 0 111 1111: 1-127
网络数:126, 127(排除全为0的和127的,网络数应该为126个,全为0它表示未知的主机和目的网络,127网段则表示本机回环地址,主要用于测试)
每个网络中的主机数:2^24-2
默认子网掩码:255.0.0.0
私网地址:10.0.0.0
B类:
B类网络的前16位表示网络ID,后16位表示主机ID
10 00 0000 - 10 11 1111:128-191
网络数:2^14
每个网络中的主机数:2^16-2
默认子网掩码:255.255.0.0
私网地址:172.16.0.0-172.31.0.0
C类:
C类网络的前24位表示网络ID,后8位表示主机ID
110 0 0000 - 110 1 1111: 192-223
网络数:2^21
每个网络中的主机数:2^8-2
默认子网掩码:255.255.255.0
私网地址:192.168.0.0-192.168.255.0
D类:组播
1110 0000 - 1110 1111: 224-239
E类:
240-255
- 特殊地址
0.0.0.0
0.0.0.0不是一个真正意义上的IP地址。它表示一个集合:所有不清楚的主机和目的网络。
255.255.255.255
限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机
127.0.0.1~127.255.255.254
本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的 数据包。
224.0.0.0到239.255.255.255
组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于一些特定的程序以及多媒体程序
169.254.x.x
如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址。
4、总结常见网络管理命令
- 配置网络接口
ifconfig命令
ifconfig [interface]
ifconfig -a
ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address …
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK
注意:立即生效
启用混杂模式:[-]promisc - 路由管理命令
route命令
查看:route -n
添加:route add
route add [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
目标:192.168.1.3 网关:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0
目标:192.168.0.0 网关:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0 - 显示网络连接
netstat命令
netstat [–tcp|-t] [–udp|-u] [–raw|-w] [–listening|-l] [–all|-a] [–numeric|-n] [–extend|-e[–extend|-e]] [–program|-p]
-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口;
-e:扩展格式
-p: 显示相关进程及PID
常用组合:
-tan, -uan, -tnl, -unl
显示路由表:
netstat {–route|-r} [–numeric|-n]
-r: 显示内核路由表
-n: 数字格式
显示接口统计数据:
netstat {–interfaces|-I|-i} [iface] [–all|-a] [–extend|-e] [–program|-p] [–numeric|-n]
netstat -i
netstat –I=IFACE
ifconfig -s eth0 - 配置Linux网络属性
ip命令(代替ifconfig命令)
ip [ OPTIONS ] OBJECT { COMMAND | help }
OBJECT := { link | addr | route }
ip link - 网络设备配置
set dev IFACE
可设置属性:
up and down:激活或禁用指定接口
ifup/ifdown
show [dev IFACE]:指定接口
[up]:仅显示处于激活状态的接口
ip addr { add | del } IFADDR dev STRING
[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域
global: 全局可用
link: 仅链接可用
host: 本机可用
ip address show - 查看地址信息
ip address flush - 清空地址
ip route - routing table management
添加路由:ip route add
ip route add TARGET via GW dev IFACE src SOURCE_IP
TARGET:
主机路由:IP
网络路由:NETWORK/MASK
添加网关:ip route add default via GW dev IFACE
删除路由:ip route delete
ip route del TARGET
显示路由:ip route show|list
清空路由表:ip route flush [dev IFACE] [via PREFIX] - 地址配置工具
nmcli
显示所有包括不活动连接
nmcli con show
显示所有活动连接
nmcli con show --active
显示网络连接配置
nmcli con show "System eth0“
显示设备状态
nmcli dev status
5、给定IP地址167.77.88.99和掩码255.255.255.192,子网号是什么?广播地址是什么?有效IP地址是什么?
网络占用:26位
主机占用:6位
167.77.88.99属于B类地址,默认掩码为16位,子网络号为:10位
167.77.88.99网络地址:167.77.88.64
167.77.88.99广播地址:167.77.88.127
除去一个网络IP,一个广播IP有效IP为62位(范围为:167.77.88.65——167.77.88.126)
6、添加IP地址192.168.2.2/24到eth0网卡上:
执行如下命令:ip addr add 192.168.2.2/24 dev eth0 label eth0:0
7、总结网络组创建方法,并实例演示创建网络组
网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量,其不同于旧版中bonding技术,提供更好的性能和扩展性,网络组由内核驱动和teamd守护进程实现.
- 创建网络组接口
nmcli con add type team con-name CNAME ifname INAME [config JSON]
CNAME 连接名,INAME 接口名
JSON 指定runner方式
格式:’{“runner”: {“name”: “METHOD”}}’
METHOD 可以是broadcast, roundrobin,
activebackup, loadbalance, lacp - 创建port接口
nmcli con add type team-slave con-name CNAME ifname INAME master TEAM
CNAME 连接名
INAME 网络接口名
TEAM 网络组接口名
连接名若不指定,默认为team-slave-IFACE
nmcli dev dis INAME
nmcli con up CNAME
INAME 设备名 CNAME 网络组接口名或port接口