一、简述osi七层模型和TCP/IP五层模型 编程
OSI七层模型(Open System Interconnection) vim
1).物理层缓存
二进制传输 bash
为启动,维护以及关闭物理链路定义了电气规范,机械规范,过程规范和功能规范服务器
2).数据链路层网络
访问介质 socket
定义如何格式化数据以便进行传输以及如何控制对网络的访问ide
支持错误检测工具
3).网络层测试
数据传输
路由数据包
选择传递数据的最佳路径
支持逻辑寻址和路径选择
4).传输层
传输问题
确保数据传输的可靠性
创建,维护和终止虚拟电路
经过错误检测和恢复
信息流控制来保障可靠性
5).会话层
主机间通讯
创建,管理和终止在应用程序之间的会话
6).表示层
数据表示
确保接受系统能够读出该数据
格式化数据
构建数据
协商用于应用层的数据传输语法
提供加密
7).应用层
网络进程访问应用层
为应用程序进程(例如:电子邮件,文件传输和终端仿真)提供网络服务
提供用户身份验证
TCP/IP协议栈
1)物理层
2)数据链路层
物理层和数据链路层统称为网络访问层
3)Internet层
4)传输层
5)应用层
二、总结描述TCP三次握手四次挥手
源端口,目标端口:计算机上进程之间通讯是经过端口,端口某个时刻只能被一个进程占用,因此经过指定源端口和目标端口,可知道哪两个进程须要通讯
序列号:表示本报文段所发送数据的第一个字节的编号,在TCP链接中所传送的字节流的每个字节都会按顺序编号。
确认号: 表示接收方指望收到发送方下一个报文段的第一个字节数据的编号
数据偏移: 表示TCP报文段的首部长度,共4位,因为TCP首部包含一个长度可变的选项部分,须要指定这个TCP报文段到底有多长,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远
URG: 表示本报文段中发送的数据是否包含紧急数据,后面的紧急指针字段只有当URG=1时,才有效
ACK: 表示是否前面确认号字段是否有效,只有当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报文段称为:结束报文段
窗口大小: 表示如今容许对方发送的数据量,即,从本报文段的确认号开始容许对方发送的数据量,达到此值,须要ACK确认后才能继续传送后面数据。
校验和: 提供额外的可靠性
紧急指针: 标记紧急数据在数据字段中的位置
选项部分: 其最大长度可根据TCP首部长度进行推算,TCP首部长度用4位表示,选项部分最长为40字节
TCP三次握手,是指创建一个TCP链接时,须要客户端和服务器端总共发送3个包
三次握手的目的是链接服务器指定端口,创建TCP链接,并同步链接双方的序列号和确认号并交换TCP窗口大小信息,在socket编程中,客户端执行connect()时,将触发三次握手
第一次握手:客户端发送一个TCP的SYN标志位置1的包,指明客户打算链接的服务器的端口,以及初始序号X,保存在包头的序列号(Sequence Number)字段里
第二次握手: 服务器发回确认包(ACK)应答,即SYN标志位和ACK标志位均为1,同时确认序号设置为客户的序号加1,即X+1
第三次握手: 客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1,而且把服务器发来ACK的序号字段+1,放在肯定字段中发给对方,而且在数据段放写ISN的+1
TCP四次挥手
第一次挥手:客户端发送了一个FIN报文,报文中会指定一个序列号,此时客户端状态为FIN_WAIT1状态
第二次挥手:服务端收到FIN以后,会发送ACK报文,而且包客户端的序列号+1,做为ACK报文的序列号值,代表已经收到了客户端的报文了,此时服务端处于CLOSE_WAIT状态
第三次挥手:若是服务端也想断开链接了,和客户端的第一次挥手同样,发给FIN报文,且指定一个序列号,此时服务端处于LAST_ACK状态
第四次挥手:客户端收到FIN以后,同样发送一份ACK报文做为应答,而且把服务器的序列号+1,做为本身的ACK报文的序列号值,此时客户端处于TIME_WAIT状态,注意此时TCP链接尚未释放,必须通过2*MSL(最长报文寿命)的时间后,才进入CLOSE状态,服务器只要收到客户端发出的确认,当即进入CLOSED状态
三、描述TCP和UDP区别
1).TCP协议是有链接的,意思是开始传输实际数据以前TCP的客户端和服务器端必须经过三次握手创建链接,会话结束以后也要结束链接;UDP是无链接的
2).TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,可是UDP不保证按序到达,甚至不保证到达,只是努力交付,即使是按序发送的序列,也不保证按序送到
3).TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节
4).TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送率
5).TCP是一对一的链接,而UDP则能够支持一对一,多对多,一对多的通讯
6).TCP面对的是字节流的服务,UDP面向的是报文的服务
四、总结ip分类以及每一个分类能够分配的IP数量
IP地址是一个32位二进制数,可将此32位二进制数划分为四组8位二进制八位数
IP地址由两部分组成:
1)网络ID
标识网络
每一个网段分配一个网络ID
2)主机ID
标识单个主机
由组织分配给各设备
IP地址中的前5位用于标识IP地址的类别
A类地址的第一位为0
B类地址的第一位为10
C类地址的第一位为110
D类地址的第一位为1110
E类地址的第一位为11110
IP全为0或全为1的都保留不用
IP地址分类:
A类
前8位(第一个字节)为网络ID,后24位(后三个字节)为主机ID
00000000-01111111:1-127
范围:1.0.0.1-126.255.255.254
网络数:126
每一个网络中的主机数:2^24-2=16777214
子网掩码:255.0.0.0
B类
前16位为网络ID,后16位为主机ID
10000000-10111111:128-191
范围:128.0.0.1-191.255.255.254
网络数:2^14
每一个网络中的主机数:2^16-2=65534
C类
前24位为网络ID,后8位为主机ID
11000000-11011111:192-223
范围:192.0.0.1-223.255.255.254
网络数:2^21=2097152
每一个网络中的主机数:2^8-2
D类
用于:多播、组播用户
11100000-11101111:224-239
不分网络地址和主机地址,前四位固定为1110
范围:224.0.0.1-239.255.255.254
E类
保留未使用
240-255
私有地址有:
A.10.0.0.0-10.255.255.255
B.172.16.0.0-172.31.255.255
C.192.168.0.0-192.168.255.255
私有地址:就是在互联网上不使用,而被用在局域网络中的地址
保留地址:是本机地址,等效于localhost或本机IP,通常用于测试使用(127.X.X.X;169.254.X.X)
netmask:子网掩码
功能:肯定网络ID的位数
32位二进制,对应IP网络ID为1,对应IP中主机ID为0
五、总结IP配置方法
1)ifconfig命令
此方法,一般用来临时的测试用,计算机启动后,ip地址的配置将自动失效
[ root@CentOS7 ]#ifconfig ens33 192.168.0.1 netmask 255.255.255.0
关闭networkmanager服务(同时配置Network和NetworkManager两种网络管理工具会引发冲突)
[ root@CentOS7]#systemctl stop NetworkManager
[ root@CentOS7 ]#systemctl status NetworkManager
编辑网卡配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet 网络类型
BOOTPROTO=static 获取IP的方式,有dhcp、static、none
DEVICE=enp0s3 设备名称
ONBOOT=yes 开机是否启动此网卡,重启network时是否一块儿激活
若是是获取IP方式为static,须要增长如下字段
IPADDR=192.168.75.100
NETMASK=255.255.255.0
GATEWAY=192.168.75.1
重启网络
systemctl restart network
CentOS和RHEL系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,可以让网络设备保持链接状态
使用nmtui命令来配置网络
使用nmcli命令来管理NetworkManager服务(nmcli是一款基于命令行的网络配置工具)
一个接口具备一个硬件名称(惟一的身份标识)和一个或多个链接名称(类比外号)
硬件名称:DEVICE、ifname
链接名称:NAME、cname、con-name、connection-name
具备多个链接名称的缘由:多个链接名称生成多个配置文件,容许用户在多个配置文件中快速切换(网络会话功能,在不一样的使用环境激活相应的网络会话,可实现网络配置信息的自动切换)
[ root@CentOS7 ]#nmcli connection show
NAME UUID TYPE DEVICE
eht0 c0de6c44-881b-4107-9daf-31176bffd5a9 ethernet ens33
virbr0 e67a9e33-d559-43f8-8440-f67aa5ecf0b4 bridge virbr0
没有链接到物理接口的链接名称不生效
[root@CentOS7 /]#ifconfig ens33 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.47.73 netmask 255.255.255.0 broadcast 192.168.47.255 inet6 fe80::55bd:55a6:276e:e371 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:4f:1e:a9 txqueuelen 1000 (Ethernet) RX packets 423743 bytes 632738940 (603.4 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 62395 bytes 3874561 (3.6 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 建立会话 [23:06:06 root@CentOS7 /]#nmcli connection add con-name test ifname eno16777736 type ethernet autoconnect yes save yes Connection 'test' (1686d137-27c8-4cb8-870f-d28e48ac470d) successfully added. [23:11:07 root@CentOS7 /]#nmcli connection show NAME UUID TYPE DEVICE eht0 c0de6c44-881b-4107-9daf-31176bffd5a9 ethernet ens33 virbr0 e67a9e33-d559-43f8-8440-f67aa5ecf0b4 bridge virbr0 test 1686d137-27c8-4cb8-870f-d28e48ac470d ethernet -- 配置IP [23:11:27 root@CentOS7 /]#nmcli connection modify test ipv4.addresses 192.168.75.100/24 ipv4.gateway 192.168.75.1 ipv4.dns 192.168.75.1 ipv4.method manual 启用会话 [23:12:56 root@CentOS7 /]#nmcli connection up test