Java教程

第五周(0922~0926)

本文主要是介绍第五周(0922~0926),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

第五周
1、简述osi七层模型和TCP/IP五层模型
2、总结描述TCP三次握手四次挥手
3、描述TCP和UDP区别
4、网卡绑定bond0的实现

 

第五周 (一)简述osi七层模型和TCP/IP五层模型     OSI 模型解释,这个模型主要用于教学
Layer No. Layer Name  Description 
Application 由标准通信服务和应用程序组成,为应用程序提供服务
Presentation 确保信息以机器能理解的形式传递给接收机器,数据格式化、数据加密
Session 管理协作计算机之间的连接和终止 、用来建立、管理和维护会话
Transport 管理数据的传输, 还确保接收的数据与传输的数据相同建立、管理并维护端到端的连接
Network 管理网络间的数据寻址和传送,IP选择以及路由选择
Data Link 处理跨网络媒体的数据传输,提供介质访问和链路管理
Physical 定义网络硬件的特性,信号传输方式。
    OSI vs TCP/IP  比较两者的区别  
OSI TCP/IP
由ISO(国际标准组织)开发   它是由高级研究项目机构网络(ARPANET)开发的。  
OSI模型明确区分了接口、服务和协议。   TCP/IP在服务、接口和协议之间没有任何明确的区别。  
OSI是指开放系统互连。   TCP是指传输控制协议。  
OSI使用网络层定义路由标准和协议。   TCP/IP仅使用Internet层。  
OSI遵循一种垂直的方法。   TCP/IP遵循水平方法。  
OSI层有七层。   TCP/IP有四个层。  
在OSI模型中,传输层只是面向连接的。   TCP/IP模型的一层既是面向连接的,也是无连接的。  
在OSI模型中,数据链路层和物理层是分开的。   在TCP中,物理链路和数据链路都被组合成一个单一的主机到网络层。  
会话层和表示层是OSI模型的一部分。   在TCP模型中没有会话和表示层。  
它的定义是在互联网出现之后。   它是在互联网出现之前定义的。  
OSI报头的最小大小是5字节。 最小的头大小是20字节。  
    (二)总结描述TCP三次握手四次挥手   直接解释这两个信令交互过程是较为抽象和枯燥,需要形象的使用比喻来帮助理解。 虽然用比喻的解释的时候,本意会有所损失,但是在理解记忆的之后,再温故知新,效率更高一些,直到最后掌握。   三次握手---可以理解为男女开始交往 四次挥手---可以理解为男女最后分手   11中状态可以理解为一方动作后,进入的情绪状态
状态 状态解释(最常见交互模型C/S 客户端与服务器端) 适用范围 状态比喻
CLOSED 没有任何连接状态 三次握手 连接 交往 两个都是单身,假设男生是客户端,女生是服务端,暂时都没想法
LISTEN 侦听状态,等待来自远方TCP端口的连接请求 女生最近有意向谈恋爱,于是开启了心门,愿意接收男生的交往信息
SYN-SENT 在发送连接请求后,等待对方确认 男生对于有意向的女生,发了信息,请求交往,等待女神回信中
SYN-RECEIEVD 在收到和发送一个连接请求后,等待对方确认 女生收到了男生的请求,回了信息,但不确定男生是否收到,等待中
ESTABLISHED 表示传输连接建立,双方进入数据传送状态 连接态 男生收到了女神的消息,进入亢奋阶段; 女生得到男生的回信,知道他的心意没变,也开始有些激动; 男女各自进入high的状态
FIN-WAIT-1 主动关闭,客户端已发送关闭连接请求,等待对方确认 四次挥手 关闭 分手 男生提出分手,征求女生同意,等待对方同意自己的请求
CLOSE-WAIT 被动关闭,收到对方发来的关闭连接请求,并确认 女生收到了男生的分手请求,觉得这男的也不咋地,直接回复同意
FIN-WAIT-2 主动关闭,主机已收到对方关闭传输确认,等待对方发送关闭传输连接请求 男生收到女生同意分手的消息,继续等待女方反应
LAST-ACK 被动关闭,等待最后一个关闭传输连接确认,并等待所有分组消失 女生郑重正式告知男生关系结束
TIME-WAIT 完成双向传输连接关闭,等待所有分组消失 男生收到正式告知后,回复,好,再也不见。
CLOSING 双方同时尝试关闭传输连接,等待对方确认 偶发双向请求关闭 男女双方同时提出不再相处,很少见的情况
    11种状态理解后,再理解客户端与服务端之前的信令消息内容。   关于三次握手的交互信息: 步骤1:客户端建立与服务器的连接。它发送一个带有SYN的段,并通知服务器客户机需要开始通信,以及客户端的SEQ序列号值。 步骤2:服务器用SYN-ACK信号集响应客户端请求。ACK表示接收到的段的响应,SYN段中表示应该从SEQ序列号开始。 步骤3:客户机确认服务器的响应,发出确认ACK,于是形成一个稳定的连接,从而开始实际的数据传输过程。 比如: 步骤1:客户端A通过将TCP SYN包发送到它的主机目的地来开始连接。SYN包含一个随机序列号(例如,seq=339),它表示客户端A应该传输的数据的开始序列号 步骤2:服务器B接收到数据包,并使用服务器的SYN序列号(例如:seq=9801)进行响应。它的响应还包括确认号ACK,即客户端A的序列号加1(ACK中seq=340) 步骤3:客户端A通过发送确认号ACK来响应服务器,而这个确认ACK中序列号是基于服务器的SYN序列号值加1(ACK中seq=9802) 大体上可以这样理解:     关于四次挥手的交互信息:   步骤1 (FIN From Client) 假设客户端应用程序决定要关闭连接。(当然,服务器也可以选择关闭连接)。 这会导致客户端向服务器发送FIN位为1的TCP报文段,并进入FIN_WAIT_1状态。 当处于FIN_WAIT_1状态时,客户端等待来自服务器的TCP段和确认(ACK)。    步骤2 (ACK From Server) 当Server从Sender(Client)接收到FIN位段时,Server立即向Sender(Client)发送确认(ACK)段。   步骤3(客户端等待 ) 当处于FIN_WAIT_1状态时,客户端等待来自服务器的TCP段的确认 当客户端接收到这个段时(Server端的第一次ACK),进入FIN_WAIT_2状态 当处于FIN_WAIT_2状态时,客户端等待来自服务器的另一个FIN位设为1的段。    步骤4 (FIN from Server) 服务器在发送ACK段(由于服务器正在关闭进程)一段时间后,将FIN位段发送给发送方(客户端)。   步骤5(来自客户端) 当Client接收到Server的FIN位段时,Client认可了Server的FIN位段,进入TIME_WAIT状态。 TIME_WAIT状态允许客户端在ACK丢失的情况下重新发送最后的确认。 客户端在TIME_WAIT状态下花费的时间取决于现实情况,但它们的典型值有30秒、1分钟和2分钟。 等待之后,连接正式关闭,客户端上的所有资源(包括端口号和缓冲区数据)被释放。   四次挥手大体过程如下:       (三)描述TCP和UDP区别   区别,就直接上表格吧,对比更直观。
TCP说明 UDP说明
它是一个面向连接的协议 它是无连接协议
TCP以字节流的形式读取数据,消息被传输到段边界 UDP报文包含一个接一个发送的报文 它还检查到达时间的完整性
TCP消息通过因特网从一台计算机到另一台计算机 它不是基于连接的,所以一个程序可以向另一个程序发送大量的数据包
TCP将数据包按照特定的顺序重新排列 UDP协议没有固定的顺序,因为所有的数据包都是相互独立的
TCP速度较慢 UDP是更快的错误恢复不尝试
报头大小为20字节  标题大小为8字节
TCP是重量级的 TCP需要三个包来建立套接字连接,然后才能发送任何用户数据 UDP是轻量级的 没有跟踪连接、消息排序等功能
TCP进行错误检查和错误恢复 UDP进行错误检查,但错误报文将被丢弃
有确认部分  无确认部分 
使用握手协议,如SYN,SYN-ACK,ACK  没有握手(无连接协议) 
TCP是可靠的,因为它保证数据传送到目的路由器 在UDP中不能保证数据的传送到目的地
TCP提供了广泛的错误检查机制,因为它提供了流控制和数据确认 UDP方法主要用于时间敏感的应用程序,以及回答来自较大客户端的小查询的服务器
它有助于你在不同类型的计算机之间建立连接 UDP是兼容的包通过广播发送在整个网络和多播发送
独立于操作系统运行,可独立操作 它还被用于域名系统、IP语音和在线游戏
支持许多以及多种路由协议  
它使组织之间能够互连  
 
TCP优势 UDP优势
它有助于你在不同类型的计算机之间建立连接 从不限制您使用基于连接的通信模型,分布式应用程序的启动延迟很低
它独立于操作系统运行,可独立操作 UDP数据包的接收者使它们不受管理,这也包括块边界
它支持许多及多种路由协议 广播和组播传输也可用于UDP 
它使组织之间能够互连 小额交易(DNS查找) 
TCP/IP模型具有高度可伸缩的客户机-服务器体系结构 适用带宽密集型的应用程序
 
TCP劣势 UDP劣势
在没有明确询问所有正在运行的数据之前,TCP永远不会结束传输 一个报文可能不会被发送或两次发送,也可能是按次序送达,不过得不到任何指示
不能用于广播或多播传输 路由器对UDP很无奈,如果发生冲突,它们不会重新传输
TCP没有块边界,所以您需要创建自己的块边界 UDP没有拥塞控制和流控制,所以如何实现是用户应用程序的来完成 
TCP提供了许多您不想要的特性 这可能会浪费带宽、时间或精力 UDP有时会遭受更严重的包丢失 
 
TCP适用场景 UDP适用场景
适用于要求可靠传输的应用,例如文件传输。 适用于实时应用,例如:IP电话、视频会议、直播等。
    (四)网卡绑定bond0的实现   常见的bond模式有七种: Mode=0(balance-rr) 表示负载分担round-robin 轮询的方式。 Mode=1(active-backup) 表示主备模式,只有一块网卡是active,另外一块是备的standby Mode=2(balance-xor) 表示XOR Hash负载分担,和交换机的聚合强制不协商方式配合,需要xmit_hash_policy策略 Mode=3(broadcast) 表示所有包从所有interface发出。 Mode=4(802.3ad) 表示支持802.3ad协议,和交换机的聚合LACP方式配,需要xmit_hash_policy策略 Mode=5(balance-tlb) 表示根据每个slave的负载情况选择slave进行发送,接收时使用当前轮到的slave Mode=6(balance-alb) 在5的基础上增加了rlb     centos 6的bond操作   修改前的信息:
[root@centos6 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    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 qlen 1000
    link/ether 00:0c:29:ea:d3:35 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.100/24 brd 10.0.0.255 scope global eth0
    inet6 fe80::20c:29ff:feea:d335/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:ea:d3:3f brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.100/24 brd 172.16.1.255 scope global eth1
    inet6 fe80::20c:29ff:feea:d33f/64 scope link
       valid_lft forever preferred_lft forever

网卡的配置,eth0 与eth1 基本上差不多

[root@centos6 ~]# cat /tmp/ifcfg-eth1.ori
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=172.16.1.100
NETMASK=255.255.255.0
[root@centos6 ~]#

修改后的配置:

[root@centos6 network-scripts]# cat ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BONDING_OPTS="miimon=100 mode=1"
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.0.0.155
NETMASK=255.255.255.0
GATEWAY=10.0.0.252
[root@centos6 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
[root@centos6 network-scripts]# cat ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
MASTER=bond0
SLAVE=yes
  修改完成后,重启网络 
service network restart

    Centos 7  nmcli的方式实现bond 修改之前:
[root@centos7 ~]# 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:4e:c3:dd brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.151/24 brd 10.0.0.255 scope global noprefixroute dynamic eth0
       valid_lft 5443173sec preferred_lft 5443173sec
    inet6 fe80::fd7d:d853:fd57:25dc/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:4e:c3:e7 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.153/24 brd 10.0.0.255 scope global noprefixroute dynamic eth1
       valid_lft 5443173sec preferred_lft 5443173sec
    inet6 fe80::afb6:852f:eaec:38d1/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
修改过程:  
nmcli con show

 
[root@centos7 ~]# nmcli con add type bond con-name bond0 ifname bond0 mode active-backup
Connection 'bond0' (3f1d31aa-525f-4e54-855c-8b5a75c95812) successfully added.

 

[root@centos7 ~]# nmcli con add type bond-slave ifname eth0 master bond0
Connection 'bond-slave-eth0' (2e9caaec-8ba8-4f0c-b222-230912819d09) successfully added.
[root@centos7 ~]# nmcli con add type bond-slave ifname eth1 master bond0
Connection 'bond-slave-eth1' (6f01745a-1897-4566-a54c-5c73ec6d50a8) successfully added.

 

[root@centos7 ~]# nmcli con up bond-slave-eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/19)
[root@centos7 ~]# nmcli con up bond-slave-eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/20)
[root@centos7 network-scripts]# nmcli con up bond0     
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/21)

  修改后的状态:       对比了一下 centos 7 使用nmcli自动生成的配置文件,会有额外的选项 centos 6 手工创建编写的配置文件,感觉更简约一些
这篇关于第五周(0922~0926)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!