第七周作业(7.20-7.26)

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

1.1. OSI七层模型概述

物理层(Physical Layer):主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是将数据转换成比特流,对应的是网线,光纤等。

数据链路层(Data Link Layer):负责网络寻址、错误侦测和改错,这一层通常还提供错误检测和纠正,以确保数据的可靠传输。当表头和表尾被加至数据包时,会形成帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串,它的主要作用是将比特流封装成数据帧,对应集线器,中继器,交换机等。

网络层(Network Layer):为不同局域网的主机通讯提供路由寻址,作用将数据帧封装成数据报,对应路由器,三层交换等。

传输层(Transport Layer):定义传输协议TCP/UDP。TCP(传输控制协议,可靠的,面向连接的,全双工的,流式传输。传输效率低。用于传输可靠性要求高,数据量大的数据)。UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的), 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组,常常把这一层数据叫做段。

会话层(Session Layer):负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接,通过传输层(端口号:传输端口与接收端口)建立数据传输的通路,主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。

表示层(Presentation Layer):把数据转换为能与接收者的系统格式兼容并适合传输的格式。可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。

应用层(Application Layer): 提供为应用软件而设的接口,以设置与另一应用软件之间的通信是最靠近用户的OSI层,这一层是用户的应用程序(例如电子邮件、文件传输和终端仿真)。

1.2. TCP/IP五层模型

在TCP/IP分层中,OSI的应用层、表示层、会话层全部统一为应用层,而底层的链路层和物理层又统一为接口层。每个TCP/IP分层都对应一些协议,这些协议组成了TCP/IP协议栈。

名称 协议
应用层 HTTP协议 DNS协议 FTP协议 POP3协议等等
传输层 TCP协议和UDP协议,在这一层中将指定通信端口
网络层 ARP协议 IP协议 ICMP协议 IGMP协议 网络层有些协议并不完全属于网络层,有些可能向下跨越到链路层,但总的来说,将它们都归类到网络层协议
网络接口层 点对点的PPP协议 以太网 帧中继等等

OSI七层和TCP/IP五层以及对应网络设备对比示例图

image.png

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

2.1. 建立TCP连接:三次握手
image.png

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

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

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

(4)B最终收到A的ACK包之后,也将进入ESTABLISHED状态。到此,TCP连接就建立完成。

需注意的是,B回复A的时候,也发送了一个SYN=1的包,相当于也是在请求A去建立TCP连接,所以A最后回复了一个ACK包。

2.2. 断开TCP连接:四次挥手

image.png

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

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

(3)当A收到B的ACK包之后,它将进入FIN-WAIT-2,等待B发起从B到A方向的连接关闭请求。

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

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

(6)当B收到A的回复ACK包之后,意味着B到A方向的连接关闭己经确认了,于是B端关闭连接。

(7)当A等待了2MSL的时长之后,将真正关闭连接。

3、描述TCP和UDP区别

选项 TCP UDP
相同点 工作在传输层 工作在传输层
不同点 面向连接协议
全双工协议
半关闭
错误检查
将数据打包成段,排序
确认机制
数据恢复,重传
流量控制,滑动窗口
拥塞控制,慢启动和拥塞避免算法
非面向连接协议
提供不可靠的网络访问
有限的错误检查
传输性能高
无数据恢复特性

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

Internet委员会定义了5种IP地址,分别是A-E类,其中D和E类为特殊地址。
(1)网络地址最高位是0的地址为A类地址;
(2)网络地址最高位是10的地址为B类地址;
(3)网络地址最高位是110的地址为C类地址;
(4)网络地址最高位是1110的地址为D类地址;
(5)网络地址最高位是11110的地址为E类地址。
其中D类地址被用于组播地址,E类地址用于科学研究

分类 主机位 IP范围 网段数 每个网段的
合法地址数量
A类 3个字节 1-126.X.X.X 126 256x256x256-2
=16777214
B类 2个字节 128-191.X.X.X 64x256
=16384
256x256-2
=65534
C类 1个字节 192-223.X.X.X 32x256x256
=2097152
256-2
=254
D类 - 224-239.X.X.X - -
E类 - 240-255.X.X.X - -

5、总结IP配置方法

(1)ifconfig命令临时修改IP地址

[root@centos7 ~]# ifconfig eth0 192.168.23.133

(2)修改配置文件后重启网络服务

[root@centos6 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0     /*此配置文件应用到的设备,也是显示名称,必须/sys/class/net/目录下的某个网卡名相同
TYPE=Ethernet   /*设定接口类型,常见的有Ethernet,bridge
UUID=9dc2be73-d4b2-4f52-85fe-437ca47dd3fb  /*设备唯一标识
ONBOOT=yes  /*在系统启动时是否激活此设备
NM_CONTROLLED=yes  /*表示此网卡是否接受NM管理
BOOTPROTO=dhcp  /*激活此设备时使用的地址配置协议,常用的dhcp,static,none,boottp
HWADDR=00:0C:29:DA:4A:51  /*对应的设备的MAC地址
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"

#由于我是使用DHCP,故没设置以下变量
#IPADDR   /*指明IP地址
#NETMASK  /*设定默认网关
#GATEWAY  /*设定默认网关
#DNS1  /*设定第一个DNS服务器指向
#DNS2  /*设定第二个DNS服务器指向

你可能感兴趣的:(第七周作业(7.20-7.26))