随笔7_tww

1、简述osi七层模型和TCP/IP五层模型  

OSI七层模型(Open System Interconnection)  

1).物理层

二进制传输  

为启动,维护以及关闭物理链路定义了电气规范,机械规范,过程规范和功能规范

2).数据链路层

访问介质  

定义如何格式化数据以便进行传输以及如何控制对网络的访问

支持错误检测

3).网络层

数据传输  

扫描二维码关注公众号,回复: 11448114 查看本文章

    路由数据包

    选择传递数据的最佳路径

    支持逻辑寻址和路径选择

4).传输层

传输问题  

    确保数据传输的可靠性

    建立,维护和终止虚拟电路

    通过错误检测和恢复

    信息流控制来保障可靠性

5).会话层

主机间通信  

建立,管理和终止在应用程序之间的会话

6).表示层

数据表示  

    确保接受系统可以读出该数据

    格式化数据

    构建数据

    协商用于应用层的数据传输语法

    提供加密

7).应用层

网络进程访问应用层  

    为应用程序进程(例如:电子邮件,文件传输和终端仿真)提供网络服务

    提供用户身份验证

TCP/IP协议栈  

1)物理层

2)数据链路层

    物理层和数据链路层统称为网络访问层  

3)Internet层

4)传输层

5)应用层

2、总结描述TCP三次握手四次挥手  

image  

源端口,目标端口:计算机上进程之间通信是通过端口,端口某个时刻只能被一个进程占用,所以通过指定源端口和目标端口,可知道哪两个进程需要通信

序列号:表示本报文段所发送数据的第一个字节的编号,在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

image 

TCP四次挥手  

 第一次挥手:客户端发送了一个FIN报文,报文中会指定一个序列号,此时客户端状态为FIN_WAIT1状态

第二次挥手:服务端收到FIN之后,会发送ACK报文,并且包客户端的序列号+1,作为ACK报文的序列号值,表明已经收到了客户端的报文了,此时服务端处于CLOSE_WAIT状态

第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给FIN报文,且指定一个序列号,此时服务端处于LAST_ACK状态

第四次挥手:客户端收到FIN之后,一样发送一份ACK报文作为应答,并且把服务器的序列号+1,作为自己的ACK报文的序列号值,此时客户端处于TIME_WAIT状态,注意此时TCP连接还没有释放,必须经过2*MSL(最长报文寿命)的时间后,才进入CLOSE状态,服务器只要收到客户端发出的确认,立即进入CLOSED状态

image 

3、描述TCP和UDP区别  

1).TCP协议是有连接的,意思是开始传输实际数据之前TCP的客户端和服务器端必须通过三次握手建立连接,会话结束之后也要结束连接;UDP是无连接的  

2).TCP协议保证数据按序发送,按序到达,提供超时重传来保证可靠性,但是UDP不保证按序到达,甚至不保证到达,只是努力交付,即便是按序发送的序列,也不保证按序送到  

3).TCP协议所需资源多,TCP首部需20个字节(不算可选项),UDP首部字段只需8个字节  

4).TCP有流量控制和拥塞控制,UDP没有,网络拥堵不会影响发送端的发送率  

5).TCP是一对一的连接,而UDP则可以支持一对一,多对多,一对多的通信

6).TCP面对的是字节流的服务,UDP面向的是报文的服务  

4、总结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

5、总结IP配置方法

1)ifconfig命令

此方法,通常用来临时的测试用,计算机启动后,ip地址的配置将自动失效

[ root@CentOS7 ]#ifconfig ens33 192.168.0.1 netmask 255.255.255.0

2)配置网卡

关闭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

3)NetworkManager网络管理工具

CentOS和RHEL系统默认使用NetworkManager来提供网络服务,这是一种动态管理网络配置的守护进程,能够让网络设备保持连接状态

使用nmtui命令来配置网络

image

image

image

使用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



猜你喜欢

转载自blog.51cto.com/14814545/2513540