1、简述osi七层模型和TCP/IP五层模型
第七周作业_第1张图片

OSI七层模型:

7.应用层:

应用层是常见的一些服务应用程序的数据起始点或者终止点,它们产生的数据就是应用层数据,它们接收到的数据也是在应用层接收的。应用层是OSI最高层,所以离物理层最远,也是最接近用户的层次,所以是一般用户所能看到的层。

6.表示层:

在表示层,将为应用层产生的数据提供数据转换的服务,也就是数据如何展现、如何表示的功能。如:格式转换、编码转换、数据压缩、数据加密、解密等。

5.会话层:

跨主机的两个计算机之间的应用程序要进行通信,需要建立会话。会话层虽然不参与具体的数据传输,但它却对数据传输进行管理。会话层在两个互相通信的应用进程之间建立、组织和协调其交互活动。

4.传输层:

传输层是第一个端对端的传输控制层,通过指定端口找到对方主机上对应的服务程序。在传输层有两种协议:TCP和UDP协议。当数据到了传输层后,将被封装成数据报和数据段。如果采用UDP协议传输数据,则数据被封装成数据报。如果是TCP协议,则数据被封装成数据段。

3.网络层:

在网络层会为数据段或者数据报继续封装,加上源IP和目标IP地址,加上IP地址之后,数据段或者数据报就成为了数据包。因为数据包有了目标IP地址,根据路由规则,可以知道将这个数据包怎么传递出去,以及怎么找到目标主机。另一方面,数据包中还有源IP地址,使得对方主机回应的时候,可以将对方产生的数据根据这个源IP地址路由回来,使得自己能够收到对方的响应数据。

2.数据链路层:

在数据链路层会将源mac地址和目标mac地址加入到带有IP地址的数据包中,得到数据帧。因为数据链路层最靠近物理层,所以会根据物理链路上的设备来决定封装成何种格式的数据帧。

1.物理层:

在物理层,网卡会将数字信号转变成电信号传递给网线或者其他数据传输介质,物理层处理后得到的数据是二进制数据,也称为bit位数据。

TCP/IP五层模型:

TCP/IP五层协议和OSI的七层协议对应关系如下:

第七周作业_第2张图片

第七周作业_第3张图片

第七周作业_第4张图片

TCP/IP 五层模型可以分为:应用层,传输层,网络层,数据链路层,物理层。

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

应用层协议包括:HTTP协议、DNS协议、FTP协议、POP3协议等。

传输层包括两个协议:TCP协议和UDP协议。在这一层将指定通信端口。

网络层包括:IP协议、 ICMP协议、 IGMP协议等。

数据链路层:点对点的PPP协议,以太网还有帧中继以及其他协议。

物理层一般包括的设备是,中继器、集线器、双绞线

数据链路层包括:网桥,以太网交换机、网卡

网络层包括:路由器、三层交换机

传输层包括:四层路由器、四层交换机

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

TCP在传输数据之前,首先要建立好TCP连接,后续所有数据都基于这个已建立的连接来传输。

建立TCP连接的过程通常被称为三次握手。

第七周作业_第5张图片
首先服务端B的服务进程已经监听在某个端口上,监听之后就可以一直等待客户端请求建立TCP连接。

1.当客户端A想要和B建立TCP连接时,首先会发送一个连接请求报文给服务端B。在这个请求报文中,TCP首部中的SYN位设置为1,ACK位设置为0,假设此时的序号为x,即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在收到这个回复包之后,也将进入ESTABLISHED状态,此时,TCP连接建立完成。

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

​ 另一方面,A最后回复一个ACK包是威力避免无效连接请求再次重生的问题。因为A首先发送SYN包后,可能因为很长时间都没有被B接收到,于是A会在超时后重新传这个包,于是在网络上就会有两个SYN包,假设此时B接受到了其中一个SYN包,并就这个SYN包和A建立了连接,当数据传输完成时,TCP连接释放之后,B突然接收到了另一个SYN包,此时,B会认为A又在请求建立TCP连接,如果B在回复之后就立即建立了TCP而不是等待A的回复,那么机于这个SYN包就会再次建立一个TCP连接,而这并不是A想要建立的,而如果A也发送了一个ACK包就可以避免这个问题,A在最后发送ACK后进入ESTABLISHED模式,不会再建立连接了,而B再收到这条ACK信息后也会进入ESTABLISHED状态。

断开TCP连接:四次挥手

第七周作业_第6张图片

释放TCP连接的四次挥手过程

首先在两端开始释放TCP连接之前,都已经处在ESTABLISHED状态,假设现在A端开始请求释放连接(B也可以主动释放连接)。

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(假设时v)发送完这个回复之后,服务器B进入CLOSE_WAIT状态,到了这个阶段,A到B方向的连接就已经被释放了,所以CLOSE_WAIT状态也被称作半关闭状态。

3.当A收到B的ACK包后,他将进入FIN_WAIT_2状态,等待B发起从B到A方向的连接关闭请求。

4.当B确认已经没有其他数据需要发送后,B开始主动关闭B到A方向的TCP连接,这时候会发送一个FIN包,同时设置ACK为1,ack仍然保持不变,是u+1,而seq则为一个新值。因为在进入CLOSE_WAIT之后,B可能还发送了一些数据,B发送完这个FIN+ACK=1的包后将进入LAST_ACK状态。

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

RFC793定义了MSL为2分钟,Linux设置成了30s 连接可以工作在TCP半开状态。即一侧关闭了连接,不再发送数据;但另一侧没有关闭连接,仍可以发送数据。已关闭的一侧仍然应接收数据,直至对侧也关闭了连接当B收到了A回复之后,意味着B到A方向的连接关闭已经确认了,于是B也关闭而A在等待了2个MSL之后,将真正关闭。

6.当B收到A的回复ACK之后,意味着B到A方向的连接关闭已经确认了,于是B端开始关闭连接。

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

3、描述TCP和UDP区别

UDP和TCP协议主要区别是两者在如何实现信息的可靠传递方面不同,TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发送确认消息;发送方只有在接收到该确认消息后才继续发送其他消息,否则就一直等待直到收到确认信息为止。

与TCP不同,UDP协议并不提供数据传送的保证机制。如果在从发送方到接收方的传递过程中出现数据报的丢失,协议本身并不能做出任何检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。

UDP协议:

UDP(User Datagram Protocol)是用户数据报协议,是OSI的传输层协议。它只是比IP数据包多提供了很少一些功能,比如添加端口标识不同的应用层协议,差错检测等。

UDP的主要特点包括:

1.UDP是无连接的,即发送数据之前不需要和对方先建立好连接(所以也没有关闭的过程)因此效率比较高。

2.UDP只能尽量保证数据可到达对方,但无法保证可靠的交付,主要还是因为没有建立连接,数据丢失后无法重传。

3.UDP是面向数据报的,当应用采用UDP协议时,UDP将对数据添加首部后直接给网络层,他不会合并也不会拆分,而是应用层给多少数据UDP就包多少数据,包装好后的数据称作数据报,传输时以数据报为单位,一次传输一个报文。接收到UDP报文时,UDP解封后直接将整个数据交给应用层,所以,对于使用UDP协议的程序,必须选择大小合适的报文,如果报文太大,则在IP层对其进行分层,导致IP层效率变低。

4.UDP首部开销小,只有8字节,而TCP的首部有20字节,相比TCP而言,UDP的效率高。

5.UDP没有拥塞控制,在网络出现拥塞时,源主机不会因此而降低发送速率,所以UDP的实用性比较好,所以,对于允许丢失的一些数据,但又不需要高实用性的场景,UDP更为合适。

6.差错检测功能有限,在检验后发现不一致,则直接丢弃数据报。

TCP协议:

TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发送确认消息;发送方只有在接收到该确认消息后才继续发送其他消息,否则就一直等待直到收到确认信息为止。

TCP协议首部的20个字符是固定的一些字段,20字节之后有一段可选字段也称为选项,长度可变。

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

IP地址分类:

第七周作业_第7张图片

A类: 0 000 0000 - 0 111 1111: 1-127 网络数:126, 127 每个网络中的主机数:2^24-2 默认子网掩码:255.0.0.0 私网地址:10.0.0.0

B类:10 00 0000 - 10 11 1111:128-191 网络数:2^14 每个网络中的主机数:2^16-2 默认子网掩码:255.255.0.0 私网地址:172.16.0.0-172.31.0.0

C类: 110 0 0000 - 110 1 1111: 192-223 网络数:2^21 每个网络中的主机数:2^8-2 默认子网掩码:255.255.255.0 私网地址:192.168.0.0-192.168.255.0

D类:组播 1110 0000 - 1110 1111: 224-239

E类:保留未使用 240-255

特殊地址:

0.0.0.0不是一个真正意义上的IP地址。它表示所有不清楚的主机和目的网络

255.255.255.255 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机

127.0.0.1~127.255.255.254 本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为 “127.0.0.1”的 数据包

224.0.0.0到239.255.255.255 组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于一些特定的程序以及多媒体程序

169.254.x.x 如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地 址,系统会为主机分配这样地址

5、总结IP配置方法

1.在/etc/sysconfig/network-script/目录下有不少文件,绝大部分都是脚本类的文件,但有一类ifcfg开头的文件为网卡配置文件(interface config),所有ifcfg开头的文件在启动网络服务的时候都会被加载读取,具体的文件名ifcfg-xx的xx可以随便命名。

2.通过网卡配置文件可设定IP地址,子网掩码,默认网关,DNS且永久生效。

该文件的主要内容:

NAME:图形界面的网卡名
DEVICE:此配置文件应用到的设备
ONBOOT:在系统引导时是否激活此设备
TYPE:接口类型;常见有的Ethernet, Bridge
UUID:设备的惟一标识
BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp
IPADDR:指明IP地址
PREFIX:以CIDR表示表示子网掩码如255.255.255.0就可以写成24
NETMASK:子网掩码
GATEWAY: 默认网关
DNS1:第一个DNS服务器指向
DNS2:第二个DNS服务器指向
HWADDR:对应的设备的MAC地址
NM_CONTROLLED:NM是NetworkManager的简写,此网卡是否接受NM控制;建议CentOS6为“no”
USERCTL:普通用户是否可控制此设备
PEERDNS:如果BOOTPROTO的值为“dhcp”,YES将允许dhcp server分配的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf

修改网络配置文件

1.网卡信息配置文件:
第七周作业_第8张图片

2.主机名文件:

第七周作业_第9张图片

3.DNS配置文件:

第七周作业_第10张图片

配置IP临时生效:

ifconfig:
第七周作业_第11张图片

ip:

第七周作业_第12张图片

修改完以上文件,需要重启网卡服务,使文件生效命令:

启动 service network start

关闭 service network stop

重启 service network restart