随笔7_tww

一、简述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三次握手四次挥手  

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 

三、描述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

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
相关文章
相关标签/搜索