Week 5 Homework-程序员宅基地

技术标签: udp  tcp/ip  

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

OSI七层模型

OSI(Open Systems Interconnection Reference Model)开放式系统互联参考模型。

第七层:应用层(Application Layer)提供了应用软件而设计的接口,以设置与另一个应用软件之间的通信,协议:HTTP,HTTPS,FTP,Telnet,SSH,SMTP,POP3等。

第六层:表示层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式,如:数据加密,解密,压缩和解压缩等。

第五层:会话层(Session Layer)负责在数据传输中设置和维护两个节点之间的通信连接

第四层:传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等

第三层:网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络资料。例如:互联网协议(IP)等

第二层:数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框(Data Frame)。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。

分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Media access control,MAC)子层。

第一层:物理层(Physical Layer)它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等

TCP/IP模型

TCP/IP传输控制协议/因特网互联协议,是一个协议栈,包括许许多多的一些协议:TCP、IP、UDP、ICMP、FTP、TELNET、SMTP等。

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

三次握手过程:
在这里插入图片描述
首先服务器端的服务进程已经监听在某个端口上,监听之后就可以一直等待客户端请求建立TCP连接。

1)当客户端想要和服务器端进立TCP连接时,首先会发送一个连接请求报文给服务器端。在这个请求报文中,TCP首部中的SYN位设置为1,ACK位设置为0,假设此时的序列号是x(序列号不一定是1),即SYN=1、ACK=0、seq=x。这个包也常称为SYN包,当客户端发送完SYN包后,它将进入SYN_SENT状态。

2)当服务器端收到报文后,发现其中的SYN=1、ACK=0,便知道这是一个TCP连接的请求包,如果服务器端确认与客户端建立TCP连接,那么服务器端需回复客户端。回复时,SYN=1、ACK=1、ack=x+1、seq=y。注意区分这里的ACK和ack,ACK表示的是占用一个比特位的ACK设置位,ack是确认号,这个包通常被称为ACK包,当服务器端发送完ACK包之后,它将进入AYN_RECV状态。

3)当客户端收到服务器端回复报文后,发现里面的SYN=1、ACK=1,于是也会向服务器端回复一个ACK包,回复时,SYN=0,ACK=1、seq=x+1、ack=y+1。这里的SYN=0、ACK=1表示这不是建立连接请求包,而是回复包。客户端发送完之后,就进入ESTABLISHED状态,表示连接在客户端已经建立完成。

4)服务器端最终收到客户端的ACK包之后,也将进入ESATBLISHED状态。到此,TCP连接就建立完成。

四次挥手过程
在这里插入图片描述
首先两端在开始释放TCP连接之前,都已经处于ESTABLISHED状态,假设客户端开始请求释放连接(当前,服务器端也可以主动释放连接)。

1)客户端发送一个TCP首部中FIN位置为1的包给服务器端,假设此时序号是u,即seq=u。FIN=1意味着这是一个请求关闭TCP连接的数据包,这种包也称为FIN包。当发送FIN包之后,客户端将从ESTABLISHED状态转为FIN-WAIT-1状态。

2)服务器端收到FIN包之后,发现其中FIN=1,知道客户端请求关闭,于是发一个回复包给A。回复时,设置ACK=1,ack=u+1,同时还设置序列号seq=v(假设服务器端现在发送到的数据序列号是v),发送完这个回复包之后,服务端进入CLOSE-WAIT状态。到了这个阶段,客户端到服务器端方向的连接就已经释放了,客户端不能再发送传输数据给服务器端,但是服务器端到客户端方向的连接还没有关闭,它可以继续发送数据给客户端,客户端也会接收。因为这个阶段只有一个方向的连接被释放,所以close-wait状态也称为半关闭状态。

3)当客户端收到服务器端的ACK包之后,它将进入FIN-WAIT2,等待服务器端发起从服务器端到客户端方向的连接关闭请求。

4)当服务器端确认已经没有数据发送给客户端后,服务器端开始主动关闭从服务器端客户端方向的TCP连接,这时会发送一个FIN包,同时ACK设置为1,ack仍然保持不变,是u+1,而seq则为一个新值w,因为进入CLOSE-WAIT之后,服务器端可能还发送了一些数据。服务器端发送完这个FIN+ACK包之后,将进入LAST-ACK(最后确认)状态。

5)当客户端收到服务器端FIN+ACK包之后,需要对B发送的关闭请求做出回复,回复时,ACK=1,seq=u+1不变,ack=w+1,当发送完这个ACK包之后,客户端不会立即就关闭,而是进入TIME-WAIT阶段等待一段时间(2倍MSL(最大段生存期)时长)。

6)当服务器端收到客户端的回复ACK包之后,意味着服务器端到客户端方向的连接关闭已经确认了,于是服务器端关闭连接。

7)当客户端等待了2倍MSL的时长之后,将真正关闭连接。

3、描述TCP和UDP区别

  • 相同点

    两者都是以协议的概念为基础

    协议栈中的协议彼此相互独立

    下层对上层提供服务

  • 不同点

    OSI是先有模型,TCP/IP是先有协议后有模型

    OSI是国际标准,适用于各种协议栈,TCP/IP实际标准,只适用于TCP/IP网络

    层次数量不同

4、网卡绑定bond0的实现

环境:

主机一:centos8-0

vmnet1:eth1,eth2

bond0:192.168.101.100/24

主机二:centos8-1

vmnet1:eth1,eth2

bond0:192.168.101.101/24

在vmnet1上配置bond0

主机一配置:

# 创建并配置bond0配置文件
[root@centos8-0 ~]# vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
NAME=bond0
TYPE=bond
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.101.100
PREFIX=24
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
# 说明:miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路


# 编辑从属网卡配置
[root@centos8-0 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
NAME=eth1
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

[root@centos8-0 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
NAME=eth2
BOOTPROTO=none
ONBOOT=yes
SLAVE=yes
MASTER=bond0

# 重新加载配置
[root@centos8-0 ~]# nmcli connection reload

# 要启动绑定,则必须首先启动从属接口
[root@centos8-0 ~]# nmcli connection up eth1
[root@centos8-0 ~]# nmcli connection up eth2

# 启动绑定
[root@centos8-0 ~]# nmcli connection up bond0

# 查看bond0的状态
[root@centos8-0 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c9:7d:fe
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c9:7d:08
Slave queue ID: 0

主机二配置:

# 添加bonding接口并配置IP地址信息
[root@centos8-1 ~]# nmcli conn add type bond con-name bond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.101.101/24 autoconnect yes 

# 添加从属接口
[root@centos8-1 ~]# nmcli connection add type bond-slave ifname eth1 master bond0
[root@centos8-1 ~]# nmcli connection add type bond-slave ifname eth2 master bond0

# 要启动绑定,则必须首先启动从属接口
[root@centos8-1 ~]# nmcli connection up bond-slave-eth1
[root@centos8-1 ~]# nmcli connection up bond-slave-eth2

# 启动绑定
[root@centos8-1 ~]# nmcli conn up bond0

# 查看bond0的状态
[root@centos8-1 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup)
Primary Slave: None
Currently Active Slave: eth1
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth1
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:9e:90:67
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:9e:90:71
Slave queue ID: 0

测试
在这里插入图片描述
断开eth1,模拟某个网卡故障
在这里插入图片描述
再次查看bond0状态

[root@centos8-0 ~]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: eth2
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

Slave Interface: eth1
MII Status: down
Speed: Unknown
Duplex: Unknown
Link Failure Count: 3
Permanent HW addr: 00:0c:29:c9:7d:fe
Slave queue ID: 0

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:c9:7d:08
Slave queue ID: 0
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42999527/article/details/120520271

智能推荐

攻防世界_难度8_happy_puzzle_攻防世界困难模式攻略图文-程序员宅基地

文章浏览阅读645次。这个肯定是末尾的IDAT了,因为IDAT必须要满了才会开始一下个IDAT,这个明显就是末尾的IDAT了。,对应下面的create_head()代码。,对应下面的create_tail()代码。不要考虑爆破,我已经试了一下,太多情况了。题目来源:UNCTF。_攻防世界困难模式攻略图文

达梦数据库的导出(备份)、导入_达梦数据库导入导出-程序员宅基地

文章浏览阅读2.9k次,点赞3次,收藏10次。偶尔会用到,记录、分享。1. 数据库导出1.1 切换到dmdba用户su - dmdba1.2 进入达梦数据库安装路径的bin目录,执行导库操作  导出语句:./dexp cwy_init/[email protected]:5236 file=cwy_init.dmp log=cwy_init_exp.log 注释:   cwy_init/init_123..._达梦数据库导入导出

js引入kindeditor富文本编辑器的使用_kindeditor.js-程序员宅基地

文章浏览阅读1.9k次。1. 在官网上下载KindEditor文件,可以删掉不需要要到的jsp,asp,asp.net和php文件夹。接着把文件夹放到项目文件目录下。2. 修改html文件,在页面引入js文件:<script type="text/javascript" src="./kindeditor/kindeditor-all.js"></script><script type="text/javascript" src="./kindeditor/lang/zh-CN.js"_kindeditor.js

STM32学习过程记录11——基于STM32G431CBU6硬件SPI+DMA的高效WS2812B控制方法-程序员宅基地

文章浏览阅读2.3k次,点赞6次,收藏14次。SPI的详情简介不必赘述。假设我们通过SPI发送0xAA,我们的数据线就会变为10101010,通过修改不同的内容,即可修改SPI中0和1的持续时间。比如0xF0即为前半周期为高电平,后半周期为低电平的状态。在SPI的通信模式中,CPHA配置会影响该实验,下图展示了不同采样位置的SPI时序图[1]。CPOL = 0,CPHA = 1:CLK空闲状态 = 低电平,数据在下降沿采样,并在上升沿移出CPOL = 0,CPHA = 0:CLK空闲状态 = 低电平,数据在上升沿采样,并在下降沿移出。_stm32g431cbu6

计算机网络-数据链路层_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏8次。数据链路层习题自测问题1.数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与”数据链路接通了”的区别何在?2.数据链路层中的链路控制包括哪些功能?试讨论数据链路层做成可靠的链路层有哪些优点和缺点。3.网络适配器的作用是什么?网络适配器工作在哪一层?4.数据链路层的三个基本问题(帧定界、透明传输和差错检测)为什么都必须加以解决?5.如果在数据链路层不进行帧定界,会发生什么问题?6.PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP适用于什么情况?为什么PPP协议不_接收方收到链路层数据后,使用crc检验后,余数为0,说明链路层的传输时可靠传输

软件测试工程师移民加拿大_无证移民,未受过软件工程师的教育(第1部分)-程序员宅基地

文章浏览阅读587次。软件测试工程师移民加拿大 无证移民,未受过软件工程师的教育(第1部分) (Undocumented Immigrant With No Education to Software Engineer(Part 1))Before I start, I want you to please bear with me on the way I write, I have very little gen...

随便推点

Thinkpad X250 secure boot failed 启动失败问题解决_安装完系统提示secureboot failure-程序员宅基地

文章浏览阅读304次。Thinkpad X250笔记本电脑,装的是FreeBSD,进入BIOS修改虚拟化配置(其后可能是误设置了安全开机),保存退出后系统无法启动,显示:secure boot failed ,把自己惊出一身冷汗,因为这台笔记本刚好还没开始做备份.....根据错误提示,到bios里面去找相关配置,在Security里面找到了Secure Boot选项,发现果然被设置为Enabled,将其修改为Disabled ,再开机,终于正常启动了。_安装完系统提示secureboot failure

C++如何做字符串分割(5种方法)_c++ 字符串分割-程序员宅基地

文章浏览阅读10w+次,点赞93次,收藏352次。1、用strtok函数进行字符串分割原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。其它:strtok函数线程不安全,可以使用strtok_r替代。示例://借助strtok实现split#include <string.h>#include <stdio.h&_c++ 字符串分割

2013第四届蓝桥杯 C/C++本科A组 真题答案解析_2013年第四届c a组蓝桥杯省赛真题解答-程序员宅基地

文章浏览阅读2.3k次。1 .高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢?高斯出生于:1777年4月30日。在高斯发现的一个重要定理的日记_2013年第四届c a组蓝桥杯省赛真题解答

基于供需算法优化的核极限学习机(KELM)分类算法-程序员宅基地

文章浏览阅读851次,点赞17次,收藏22次。摘要:本文利用供需算法对核极限学习机(KELM)进行优化,并用于分类。

metasploitable2渗透测试_metasploitable2怎么进入-程序员宅基地

文章浏览阅读1.1k次。一、系统弱密码登录1、在kali上执行命令行telnet 192.168.26.1292、Login和password都输入msfadmin3、登录成功,进入系统4、测试如下:二、MySQL弱密码登录:1、在kali上执行mysql –h 192.168.26.129 –u root2、登录成功,进入MySQL系统3、测试效果:三、PostgreSQL弱密码登录1、在Kali上执行psql -h 192.168.26.129 –U post..._metasploitable2怎么进入

Python学习之路:从入门到精通的指南_python人工智能开发从入门到精通pdf-程序员宅基地

文章浏览阅读257次。本文将为初学者提供Python学习的详细指南,从Python的历史、基础语法和数据类型到面向对象编程、模块和库的使用。通过本文,您将能够掌握Python编程的核心概念,为今后的编程学习和实践打下坚实基础。_python人工智能开发从入门到精通pdf