linux话题7-网络协议管理

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

早期计算机之间的通信都是各个厂商制定的标准,例如:IBM公司,生产的PC电脑产品,之间可以互相通信,就必须要安装IBM公司自己的硬件,首先要保证机器物理上能联通。然后还需要IBM自己的操作系统,以及通信软件。IBM的计算机是不能够与其他厂商的计算机互相通信的。所以就有了OSI七层模型,它是一个规范,各个厂商的计算机之间进行通信以此标准进行生产就能完成相互之间的通信。OSI七层模型可以用下图表示:


image.png

它从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。

物理层:定义了其物理设备连接的规范,涉及:物理链路的电气规范,机械规范,过程规范和功能规范;

典型设备有:网线,集线器等这些物理连接设备。

数据链路层:定义了如何格式化数据以便进行传输以及如何控制对网络的访问,定义了物理设备的唯一标识,即MAC,支持错误检测。

典型设备有:网桥,交换机

网络层:跨网通信,路由选择,并且支持逻辑寻址,有了IP地址。

典型设备有:路由器

传输层:1.确保数据传输的可靠性 2.建立,维护和终止虚拟电路 3.通过错误检测和恢复 4.流控 5.应用程序标识,即端口号。

会话层:1.管理(建立,终止)在应用程序之间的绘话;

表示层:数据的表示,加密;

应用层:人与机器的交互式程序,定义了网络应用程序应该遵循的协议,规范,提供身份验证等机制。

OSI七层模型中的应用层,表示层,会话层其实就应该是应用程序应该完成的功能。而事实上TCP/IP协议是我们互联网通信上真正使用的的协议:其对应关系如图所示:


image.png

TCP/IP协议簇,是由众多的协议组成的。其对应表格如下:

TCP/IP协议簇 对应网络协议
应用层 HTTP,HTTPS,TFTP,FTP,NFS,SSH,SMTP,TELNET,DNS等等
传输层 TCP,UDP
网络层 IP,ICMP,ARP,RARP
数据链路层 Ethernet,PPP
物理层 IEEE 802.1A

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

TCP协议是传输层的协议,当二台主机互相通信时,根据TCP/IP协议簇的层次模型,应用层会加上应用层首部,传输层会加上传输层首部,网络层会加上网络层首部,数据链路层最终加上自己的数据链路层首部,最终构成以太网帧,最后将数据通过物理层传送至目的端。为了描述TCP三次握手四次挥手的过程,首先我们要大致了解一下TCP协议的首部格式,其大致如图所示:


image.png

TCP协议首部前20个字节是固定的一些字段,内容是:

2字节长度的源端口号,2字节的长度的目的端口号,

4字节的序列号,即seq,4字节的确认号,即ack;

4位的首部长度,保留位;

6个状态位或称做信号位也可以,其值只有0和1:

URG为1表示紧急数据位,将优先发送,不按照seq的编号顺序传输。

ACK为1时表示确认号字段有效,0表示其上确认号无效;

PSH为1时表示接受方立即从Resv Buffer中向上推送给应用进程;

RST为1时重建TCP连接。

SYN为1时,还需要参考ACK状态位,SYN=1,ACK=0表示尚未建立连接,这就是一个TCP的连接请求;

对方回复时其状态位SYN=1且ACK=1。建立连接后,SYN状态就设置为0;

FIN为1时就是释放TCP连接。

窗口大小:表示允许发送方发送多少数据。双方协商时,会动态调整其值。

校验和:TCP首部和TCP数据校验和,2字节大小。

紧急指针:当URG为1时,指明紧急数据的字节数。

选项:即上方20字节的固定大小之后的,长度可变,可选字段最大长度40字节。

TCP的通信时需要建立连接:建立连接大致过程是:

  1. 客户端请求报文给服务器端;

  2. 服务器端回复报文,给客户端;

  3. 客户确认报文。

    这是一个有来有回的连接过程,因为要保证双方建立的通信时可靠的。其过程如图所示:


    image.png
  4. 一开始通信双方处于(CLOSED)未连接状态,客户端主动发送SYN=1(表示连接请求),seq=x(序列号),并使自己处于SYN-SENT(同步发送)状态;而服务器处于(监听)LISTEN状态,等待客户端主动请求。

  5. 当服务器收到连接请求时,就发送SYN=1,ACK=1,seq=y,ack=x+1的报文给客户端,并是自己处于SYN-RCVD(同步接受)状态;

  6. 客户端收到ack=x+1就表示服务器收到其连接请求。最后客户端发送ACK=1,seq=x+1,ack=y+1,服务器端得到ack=y+1时就表示大家都准备好了,就建立了连接,其均处于ESTAB-LISHED(已连接)状态了。就可以开始数据传送了。

当数据传送完毕时,TCP为了保证数据的可靠,又要经历四次挥手的过程:


image.png
  1. 客户端主动发起FIN=1,seq=u的报文,给服务器端,其自己的状态就变成了FIN-WAIT-1状态;
  2. 如果服务器响应并发送ACK=1,seq=v,ack=u+1,给客户端,客户端就主动进入FIN-WAIT-2;
  3. 等待服务器端把剩余的数据传完。服务器端把数据传完后,就发送FIN=1,ACK=1,seq=w,ack=u+1告诉客户端,客户端则进入TIME-WAIT状态,并发送ACK=1,seq=u+1,ack=w+1给服务器端;
  4. 服务器收到就进入CLOSED状态,最终TIME-WAIT时间等待结束,其客户端也CLOSED了;

这是正常分手,如果客户端和服务端都主动发起FIN请求,那么就都进入CLOSING状态。

TCP的有限状态机

CP的有限状态机共11种,标识了TCP通信过程中,客户端和服务器端分别处于的状态:

LISTEN:表示服务器端的某个socket处于监听状态,可以接受连接。
SYN_SENT:在服务端监听后,客户端socket执行CONNECT连接时,客户端发送SYN报文,此时客户端就进入。SYN_SENT状态,等待服务端的确认。
SYN_RCVD:表示服务端接收到了SYN报文,发送SYN+ACK,当收到客户端的ACK报文时,它就会进入到。ESTABLISHED状态。
ESTABLISHED:表示连接已建立了。
FIN_WAIT_1:已经建立连接后,其中一方请求终止连接,等待对方的FIN报文。
FIN_WAIT_2:这个状态下的socket,表示半连接,即有一方要求关闭连接,但另外还告诉对方:暂时还有一些数据需要传给你,请稍后再关闭连接(即只收到ACK,并未收到FIN )。
TIME_WAIT:表示收到了对方的FIN报文,并发送出了ACK报文,等待2MSL后即可回到CLOSED可用状态了。由FIN_WAIT_1进入该状态:同时收到带FIN标志和ACK标志的报文;由FIN_WAIT_2进入该状态:收到FIN报文,此时发送ACK报文。
CLOSING:双方同时在关闭一个socket,就出现了双方同时发送FIN报文的情况,就会出现CLOSING状态,表示双方都正在关闭socket。
CLOSE_WAIT:表示在等待关闭(即这个状态下是在考虑你是否还有数据发送给对方)。
LAST_ACK:它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。
CLOSED:初始状态和结束状态,当收到对方的ACK报文后,也即进入到CLOSED状态。

总结

TCP的三次握手过程就是:客户端向服务器端发送请求报文,服务器就要向客户端发送响应报文,并且等待客户端发送响应报文,这样双方才能保证互通。这就相当于打电话,A给B打电话,A说你好,B也说你好,你是谁?A说我是谁谁谁,然后就可以开始电话交流了。

​ TCP的四次挥手过程其实就是描述这样的一个过程:客户端发送终止请求,服务端收到请求,等待服务器端将所有数据传送完毕,就向客户端发送我已经传送完毕,可以断开连接了!这时候客户端还要再响应一次,最终双方断开连接。这就相当于分手的过程,A主动和B提出分手,B收到消息,发送一个回应消息。并且把分手前的财产发给A,并发送一个你有没有收到的消息,A收到了并发送一个回应消息,双方就分手了。

3、描述TCP和UDP区别

TCP协议和UDP协议是TCP/IP协议的位于第四层。主要功能是标识上层应用层的端口号,以及报文的传输方式是面向连接的还是面向无连接。

tcp协议在传输数据是,实现需要建立虚链路,即TCP的三次握手过程,然后才能传输数据;传输数据完毕还要关闭连接。

UDP协议不需要事先建立虚链路,也不需要关闭连接,直接传送数据报文;其效率很高,数据丢失无法重传。

4、总结ip分类以及每个分类可以分配的IP数量

IP地址分为IPV4和IPV6,IPV4是以32位的二进制表示,二进制不方便人类记忆,采用点分十进制的方式记录IP地址的形式,每8位2进制一组,转换为10进制数,以.分割。

IP地址的分类

公共地址

互联网通信中其IPV4的可用地址主要分为三大类:

A类:1-126.x.x.x

B类:128-191.x.x.x

C类:192-223.x.x.x

私有地址

只能用于局域网,公网上没有其私网的路由:

A类私有地址:10.0.0.0~10.255.255.255 共一个网段;

B类私有地址:172.16.0.0~172.16.255.255 共32个网段;

C类私有地址:192.168.0.0~192.168.255.255 共256个网段;

5、总结IP配置方法

centos系列发行版在/etc/sysconfig/network-scripts/目录下,所有以ifcfg开头的文件为网卡配置文件,这些文件在启动网络服务的时候都会被加载读取。通过网卡配置文件可以配置设定IP地址,子网掩码,默认网关,DNS且永久生效。

#网卡配置文件里的一些内容
[root@centos7 network-scripts]# vim /etc/sysconfig/network-scripts/if  g-eth0
TYPE=Ethernet
#网络类型现在基本上都是以太网
BOOTPROTO=none
#使用的地址配置协议名称,可以是以下值none|static|dhcp|bootp
IPADDR=192.168.44.15
#IP地址
PREFIX=24
#子网掩码CIDI表示法
GATEWAY=192.168.44.2
#网关
DEFROUTE=yes
#表示如果DHCP获取IP时将由DHCP服务设置默认路由
NAME=eth0
#网卡名称可以随表取
UUID=1c56f193-69f3-3d56-857b-20a7eb00f373
#设备唯一识别码
ONBOOT=yes
#开机时激活网卡
DEVICE=eth0
#设备名称不能随便取要与/sys/class/net/中的网卡名称相同。

ifconfig命令

作用:配置网卡信息

语法格式:ifconfig interface IP/MASK

[root@centos7 network-scripts]# ip a
#查看所有网卡配置信息
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:33:b1:78 brd ff:ff:ff:ff:ff:ff
    inet 192.168.37.7/24 brd 192.168.37.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::d75e:a642:1dce:2714/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:33:b1:82 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.233/24 brd 192.168.2.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe33:b182/64 scope link 
       valid_lft forever preferred_lft forever
[root@centos7 network-scripts]# ifconfig eth0 192.168.44.11/24
#配置eth0网卡临时生效
[root@centos7 network-scripts]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.44.11  netmask 255.255.255.0  broadcast 192.168.44.255
        inet6 fe80::d75e:a642:1dce:2714  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:33:b1:78  txqueuelen 1000  (Ethernet)
        RX packets 136  bytes 13584 (13.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13  bytes 1022 (1022.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@centos7 network-scripts]# ifconfig eth0:0 10.0.0.1/24
#网卡别名,临时生效
[root@centos7 network-scripts]# ifconfig eth0;ifconfig eth0:0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.44.11  netmask 255.255.255.0  broadcast 192.168.44.255
        inet6 fe80::d75e:a642:1dce:2714  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:33:b1:78  txqueuelen 1000  (Ethernet)
        RX packets 139  bytes 13860 (13.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 13  bytes 1022 (1022.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.1  netmask 255.255.255.0  broadcast 10.0.0.255
        ether 00:0c:29:33:b1:78  txqueuelen 1000  (Ethernet)

ip命令

作用:网络管理

(1) 配置IP的语法格式

IP addr add|del IP/NETMASK dev IFACE

[root@centos7 network-scripts]# ip addr show eth0
#只显示eth0网卡的信息
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:33:b1:78 brd ff:ff:ff:ff:ff:ff
    inet 192.168.44.11/24 brd 192.168.44.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.1/24 brd 10.0.0.255 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::d75e:a642:1dce:2714/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
       
[root@centos7 network-scripts]# ip addr show
#显示所有网卡的信息
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:33:b1:78 brd ff:ff:ff:ff:ff:ff
    inet 192.168.44.11/24 brd 192.168.44.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.1/24 brd 10.0.0.255 scope global eth0:0
       valid_lft forever preferred_lft forever
    inet6 fe80::d75e:a642:1dce:2714/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:33:b1:82 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.233/24 brd 192.168.2.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe33:b182/64 scope link 
       valid_lft forever preferred_lft forever
[root@centos7 network-scripts]# ip addr del 10.0.0.1/24 dev eth0:0
#删除指定设备的ip信息
[root@centos7 network-scripts]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:33:b1:78 brd ff:ff:ff:ff:ff:ff
    inet 192.168.44.11/24 brd 192.168.44.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::d75e:a642:1dce:2714/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever       
[root@centos7 network-scripts]# ip addr add 1.1.1.1/16 dev eth0
[root@centos7 network-scripts]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:33:b1:78 brd ff:ff:ff:ff:ff:ff
    inet 192.168.44.11/24 brd 192.168.44.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 1.1.1.1/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::d75e:a642:1dce:2714/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 9,392评论 0 11
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,051评论 0 8
  • HTTP协议 在 OSI 七层模型中,HTTP 协议位于最顶层的应用层中。通过浏览器访问网页就直接使用了 HTTP...
    WendySays阅读 767评论 0 1
  • 运输层协议概述 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是...
    srtianxia阅读 2,387评论 0 2
  • 1 概述 要了解三次握手&四次挥手的过程,就需要对TCP的报头以及有限状态机的概念有所了解,本文将介绍TCP报头的...
    ghbsunny阅读 1,039评论 0 3