您当前位置:首页 > p2p

7.6.1 Socket学习网络基础准备 | 菜鸟教程

发布时间:2019-05-08 11:06:05编辑:it技术社区网阅读次数:

在本节中介绍:

Java Sock?t技术从来没有学会照顾初学者,中风或相关的涉及网络协议中风Android开发的概念, 面试结束后,面试官来了句,我认为有以下的网络协议几层?那么,一世P协议层?什么是地狱的Sock?t? 哪几种?其中是TCP和UDP协议层?有什么不同。啊,这。因此,这部分的研究还是很概念性理论 必要!好了废话不多,开始本节 -


1。在七层OSI网络模型

当然,我们也不是专业从事网络工程,才知道什么地板,可能是用来做就可以了!

OSI七层网络模型(从底部向上)

  • 物理层(物理):提供设备和传输介质互连器件之间的数据通信提供可靠的数据传输 环境。它可以被理解为一种物理传输媒体的网络的一部分,诸如卡,线,集线器,中继器,调制解调器等待! 在该层中,数据没有组织,因为只有原始比特流电压或电处理,这层单位是:点点滴滴
  • 数据链路层(数据链路):一个数据信道将理解如何对不可靠的物理线路执行的主要功能 可靠的数据传输,所述角色变化层包括:寻址的物理地址,数据成帧,流控制,错误检测和数据的重传,等。! 这也它指的是数据链路:物理层是传输介质,以提供所述终端设备之间的数据通信连接。媒体是 从长期来看,连接是生存。连接的寿命,收发器的两端可以是改变一个或多个数据通信的。 每个通信都要经过建立通信链路和通信连接两个拆迁过程!这个成立数据发送和接收关系? 器件层具有:卡,桥,路开关所述的层单元另外:
  • 网络层(工作):主要功能是网络地址转换成对应的物理地址,并确定如何从发送的数据 路由发送者到接收者,一个所谓的路由和路由:一个终端可能需要与多个终端进行通信,以使所得 链接到数据问题的任何两个终端设备!简单地说,它是这样的:建立网络连接,并为上层提供服务! 器件层具有:路由!层单元:数据包在该层中除了IP协议!
  • 传输层(运输):提供给上层应用层的通信服务进行通信的顶部,而且还 用户功能的最低水平。。接收数据会话层,如果必要的话,该数据被分割,并且将数据向网络 层,并确保数据到达有效段的相对端!所以这层单位有:数据段 ; 而这一层有两个很重要的 该协议是:TCP传输控制协议UDP用户数据报协议这也是本节的部分解释的核心!
  • 会话层(会话):负责在两个节点之间建立网络,维护和终止通信。建立通信链路, 在保持两个节点之间的会话通信链路通畅,同步对话,决定通信是否被中断,通信中断 决定派不同机器上的用户之间的会话的地方,即建立和管理!
  • 表示层(演示):命令和从应用层数据解释各种语法赋予相应 意,并按照一定的传输格式的会话层。它的主要功能是“指示处理用户信息,如编码的问题, 数据格式转换和加密和解密,压缩和解压缩“,等。
  • 应用层(应用程序):OSI参考模型的最高水平,应用程序提供网络服务的用户。 它是基于工作的其他六个层,它负责应用程序和网络操作系统,建立到最终用户和之间的链路所需的各种网络服务和应用程序之间的网络连接完成所提出的网络用户的监督,管理等服务协议完成。此外,该层还负责各种应用程序之间的协调。服务和应用层协议提供用户有:文件服务,目录服务,文件传输服务(FTP),远程登录服务(),电子邮件服务(电子邮件),打印服务,安全服务,网络管理服务,数据库服务等。

上面我们提到了良好的光OSI七层网络模型,在以下总结:

OSI是一种理想的模型,该模型仅涉及层的一般网络系统中,在7层模型中,每一层提供了一个特殊 网络功能,从观察的透视网络功能:

  • 下面的四个层(物理层,数据链路层,网络层和传输层)主要提供数据传输和交换功能, I。e。到主节点之间进行通信到节点
  • 第四层为桥梁的上部和下部部分,整个网络架构是最关键的部分;
  • 3层(会话层,表示层和应用层)出现以向用户提供应用程序之间的信息处理能力和数据主要。

简言之,将4来完成通信子层的主要功能是完成主资源子层3个功能。

- 从上述参考:


2。TCP / IP四层模型

TCP / IP是一组协议的同义词,它也包括了许多协议,则TCP / IP协议套件的组合物。 TCP / IP协议栈被分成四个,IP协议套件位于所述第二层(对应于第三层OSI),TCP协议栈位于第三层 (对应第四OSI层)。TCP / IP通信协议使用的四个层的分层结构,每一层的下一层调用它提供 网络需要完成。此层4:

  • 应用层:应用程序间的通信层,例如简单邮件传输协议(SMTP),文件传输协议(FTP), 远程网络访问协议()等。
  • 传输层:在这个层,它提供了节点间的数据传输,如传输控制协议(TCP), 用户数据报协议(UDP),等。,TCP和UDP数据包被加到该发送数据,并将其传送到下一层, 该层负责为发送数据,并且确定数据已被接收并传送。
  • 网络互连层:负责提供基本的数据分组传输的功能,使每一块的数据分组的可到达目的地 主机(但不检查是否正确接收),如互联网协议(IP)。
  • 主机到网络层:实际的网络媒体的管理,定义如何使用实际网络 (E。G。醚,串行线路等。)来传输数据。

3。TCP / UDP说明两者的区别

好了,讲的是前两个,但是每个人的OSI模型和TCP / IP四层模型,接下来说说的理念下推广 Socket和我们开发相关的术语一些概念!

1)IP地址

2)端口

1。 对于不同的应用程序之间的区别

2。 端口号的范围是0,这是不保留端口0-1023的系统,我们的程序不使用这些端口尽可能!

3。 我们插座的IP地址和端口号,Socket是运行程序的双向通信链路的网络端点之间, 是TCP和UDP的基础!

4。 使用公共端口协议:HTTP:80,FTP:21,TEL:23

3)比较TCP协议和UDP协议:

TCP协议过程的详细

首先,TCP / IP是一个协议组,其中包括许多协议。UDP是只是其中之一。之所以命名为TCP / IP协议, 由于TCP,IP协议是两个非常重要的协议,他的两个命名。

让我们来解释一下TCP和UDP协议之间的区别:

TCP(传输控制协议,传输控制协议)是一种面向连接的协议,我。e。,数据发送和接收的钱 ,我们需要建立与对方,这往往要求采访的TCP可靠的链接三次握手而TCP四挥手三次握手: 在建立TCP连接,客户端和服务器需要一共有三个包发送确认建立连接, 在这个过程中的套接字编程通过执行客户端触发连接,一个详细的流程图如下:

  • 第一次握手:客户端SYN标志位被设置为1,随机生成的值SEQ = J和数据分组到服务器, 客户SYN_SENT进入等待确认服务器状态。
  • 第二次握手:服务器从标志位SYN = 1接收分组数据知道客户端请求建立连接时,标志服务器 SYN和ACK被设置为1,ACK = J + 1,一个随机生成的值SEQ = K,并且将数据分组发送到客户端请求以确认连接 ,服务器进入状态SYN_RCVD。
  • 第三次握手:客户端接收到确认后,检查ACK J + 1是否,ACK是1,则该标记ACK如果正确 被设置为1,ACK = K + 1,并且该分组被发送到服务器,服务器检查是否ACK K + 1,ACK被设置,并且如果正确的话, 建立连接,客户端和服务器进入ESTABLISHED状态,完成三次握手,然后是客户端和服务器之间 开始传输数据。

四挥手: 终止TCP连接,它指的是断开TCP连接,客户端和服务器需要一共有四个包发送确认断开。 在由客户端或服务器这个过程套接字编程或者接近触发执行,一个详细的流程图如下:

  • 第一波:客户端发送一个FIN,用于关闭将数据传送到客户端服务器提供者,客户端进入 FIN_WAIT_1状态
  • 第二波:Server收到FIN后,ACK发送客户端,用于接收数1确认号(SYN相同, A股金融占据了序列号),服务器进入状态CLOSE_WAIT。
  • 第三次浪潮:服务器发送一个FIN,用于关闭所述客户端服务器的数据传输,到服务器LAST_ACK 状态。
  • 第四波:客户端收到FIN,客户端进入TIME_WAIT状态,然后发送ACK到服务器,用于接收确认号数+ 1的,服务器进入关闭状态时,四个完整的波。 也有可能是同步推出主动关闭的情况:

此外,还有可能是一个常见的问题是:为什么是三次握手建立一个连接,并关闭连接挥舞了四次? 答:因为在LISTEN状态服务器,所述连接请求SYN分组被接收被建立,SYN和ACK在内部分组 发送到客户端。该连接被关闭,当收到对方的FIN消息,仅仅表示对方不发送数据,而且还 能够接收数据时,可能不拥有所有的数据都发送给对方,让自己可以立即关闭,您也可以发送一些 数据给对方,然后发送FIN消息给对方同意立即关闭连接,所以,平时自己ACK和FIN 分别发送。


UDP协议详述

UDP(用户数据报协议)的用户数据报协议,连接协议,之前的数据源的传输和终端不 连接建立后,当它要传递的数据是简单地从应用程序抓取,并尽可能快地把它扔在网络上。 在发射端,由计算机的应用程序高速数据,电源和传输带宽时,才生成UDP数据传输速度 限制; 在接收端,UDP段在队列中,每次一个应用程序的每个消息,以读取来自队列段的消息。 相比TCP没有必要建立一个连接,结构简单,我们无法保证准确性,容易流失

- 部分从上方:


4。Java中的网络提供了几个关键的类别中:

对于不同级别的网络通信,Java中的我们特色的网络有四大类:

  • IAddress: 在网络上标识的硬件资源
  • 网址: 统一资源定位器,可直接通过URL读或写在网络上的数据
  • 套接字和ServerSocket: 使用的TCP插座相关的类的网络通信协议
  • 数据报: UDP协议,存储在数据包中的数据,通过通信网络

在本节中,我们只介绍了前两类,插座,带数据报以TCP和UDP的章节再作解释!

利用?IAddress的例子

示例代码

公共类IAddressTest {
公共静态无效的主要(字串[] args)抛出异常{
//获取本机IAddress的实例:
IAddress地址= IAddress。的getLocalHost();
系统。出。的println(“计算机名:” +地址。的gethostname());
系统。出。的println( “IP地址” +地址。getHostAddress());
字节[]字节=地址。的getAddress();
系统。出。的println(“IP地址的字节数组形式:” +阵列。的toString(字节));
系统。出。的println( “直接输出IAddress对象:” +地址);
}
}
经营业绩图

?网址:这个就不用说了吧,忘了在HTTP协议前面可以看出将解释的地方?


本节小结:

这部分是所有的概念,这似乎是能够窒息是,但不明白也没关系,知道每个称为七层模型 可能是用来干什么的,以及TCP三次握手是什么和四个挥手就可以了!当然,这只是 我们应对面试的实际发展 - 这将是纠结。直接套接字是不是?啊,下一节我们将开始学习 Socket通讯在Android的~~谢谢

本文链接:7.6.1 Socket学习网络基础准备 | 菜鸟教程

友情链接:

大悲咒经文 观音心经 佛经