网络编程的基本知识

目录

两种不同的网络互联规模

三种方式组网方式

网络通信的基础

IP地址

端口号

认识协议及其作用

协议的分层

协议分层的意义

OSI七层网络模型

TCP/IP五层(四层)模型 

物理层

数据链路层

网络层

传输层

应用层

网络设备所在的分层

网络分层当中的一组重要概念(封装和分用)

应用层到传输层

传输层到网络层

网络层到数据链路层

数据链路层到物理层

物理层到数据链路层

数据链路层到网络层

网络层到传输层

传输层到应用层 

总结


两种不同的网络互联规模

1.局域网(LAN),Local Area Network是一个本地的网络,是局部组建的一种私有网络。

2.广域网(WAN),Wide Area Network是将多个局域网连接组建起来的。

三种方式组网方式

基于网线直连

 

网络编程的基本知识_第1张图片

网线相连的主机组成局域网,这种连接方式耗费大量的网线和接口。

基于交换机组建局域网

网络编程的基本知识_第2张图片

交换机上的每一口的作用是相同的,效果就是把接入的所有设备组成一个局域网。在这个局域网内部的主机可以进行相互访问。 

基于路由器组建局域网

网络编程的基本知识_第3张图片

路由器通常有两个口,一个是LAN口,一个是WAN口,其中连接在LAN口的设备在一个局域网当中。通过WAN口 连接到另外一个路由器的LAN口,连接另外一个局域网。

网络通信的基础

IP地址

1.描述的是网络上的一个主机的位置(收获地址)。

2.IP地址本质上是是一个32位整数,但是32位整数不方便记忆。所以将32位整数按照字节分成4个部分,每个部分用.隔开,且没部分整数的十进制数范围为0~255. 

格式:32位二进制数,分成4个8位二进制数。

 

端口号

1.描述一个主机上的一个应用程序。(收件人的信息)

2.端口号默认为2个字节(16位)的无符号整数,范围为0~65535

认识协议及其作用

协议是网络协议的简称,网络协议是使用网络通信(网络传输数据)经过所有网络设备都必须遵守的一组规定,规则。如:要怎样建立连接,怎样相互识别,只有遵守这样的协议,计算机之间才能进行正常的通信。

协议的内容通常分为三要素:1.语法,即数据与控制信息的结构和格式。2.语义,即需要发出合作信息,需要完成何种动作,做出何种回应。3.时序,即事件实现顺序的说明。

计算机之间通信媒介是光信号和电信号,通过光信号的高或低频率和电信号的高或低电平来表示这样的0和1信息。想要传递不同的数据格式,就需要约定不同的协议。

协议的分层

协议分层的意义

1.每层协议间没有必定的联系。(便于封装)

2.便于把对应层的协议更换。(更好的解耦合)

OSI七层网络模型

TCP/IP五层(四层)模型 

网络编程的基本知识_第4张图片

对比OSI七层模型,TCP/IP当中将应用层和表示层和会话层合并为应用层,其他的层是相同的只不过命名存在差异。

为什么既称为五层又称为四层协议?

分为四层和分为五层站在的角度不一样。五层是全局的角度看待的,而站在程序员的角度上看,物理层描述的是硬件设备和软件有没有较大的关系,所以会将物理层省略。

物理层

网络通信当中的设备,如:网线网卡,这部分是针对硬件的约束,保证所有主机和网络设备之间是相互匹配的。如:各种品牌的路由器接口都是相同的,各种主机的网络接口都是相同的。

数据链路层

负责完成两个相邻设备的直接的通信(相邻设备就是用两根网线连接的设备)。

网络编程的基本知识_第5张图片

 图中,路由器和主机1是相邻的,路由器和主机2是相邻的,主机1和主机2不是相邻的。

网络层

负责点到点之间的通信,特指的是网络当中不相邻的主机之间的通信。

 

例如图中,主机1给主机3发生信息,就是两个不相邻的点之间的通信。网络层就负责在这两点之间规划出一条合适的路线。(实际网络结构非常复杂,两个点之间的通信线路不止有一条,就需要规划出合适的那一条)。 

传输层

负责端到端之间的通信(起点到终点),同时只关系数据到了没有,而不关心数据传输的过程。打个比方,当我们网购商品时,下单后卖家将商品寄出后,商家只会关注的是商品的结果(商品寄到了没有),而不会关注商品寄的方式和寄的路线,商家就像当与传输层。

应用层

应用层与应用程序密切相关,例如传输的数据是什么,有什么作用。不同的应用程序有不同的用途。

还是网上购物的例子,商家是传输层,考虑这个东西能不能到达我的手上;快递公司是网络层,规划快递运送的路线;快递小哥是数据链路层,骑电瓶车将商品运送到快递集散中心或者将快递运输到顾客手中;电动车,公路,是物理层,提供传输的基础;以上的群体关系的是除了商品内容之外的东西。

顾客就相当于应用层,考虑商品的用途,和内容。

网络设备所在的分层

1.一台主机实现了物理层到应用层五层。

2.一台路由器实现了物理层到网络层(主要实现了物理层,数据链路层,网络层)。

3.一台交换机实现了物理层到数据链路层(主要实现了物理层,数据链路层)。

网络分层当中的一组重要概念(封装和分用)

主要了解不同协议之间是如何配合的,通过一个例子来理解这个过程:用户A使用通讯App向用户B发送打招呼信息。

应用层到传输层

 其中TCP协议报头包含的信息很多,包括“源端口”和“目的端口”。

上述的过程就是封装的过程(但是这个封装和Java面向对象中的封装不同)。

传输层到网络层

其中的IP协议报头包含的信息是“源IP”和“目的IP”

网络层到数据链路层

帧头存储的接下来要传的设备的地址(写的是当前地址到接下来一个相邻节点的地址),随着数据往下一个设备转发,帧头当中的地址会发生改变;

帧尾写着校验和。

数据链路层到物理层

到了以上步骤,数据就会离开当前主机了,到达下一个网络设备(可能数据交换机,路由器),A和B之间大概率不是用网线直连,所以这中间可能会经过多的重复过程。

以上过程都统称为封装的过程。接下来看看分用的过程。所谓分用就是封装的逆过程。

物理层到数据链路层

主机B感知到一组高低电平,并将其转化为0 1 的一串数据,这串0 1为一组完整的以太网数据帧。这时候物理层就将以太网数据帧传到了数据链路层。

以太网数据帧:

数据链路层到网络层

这时候数据链路层负责对以太网数据帧进行解析,去掉帧头和帧尾,取出IP协议报文。再将IP协议报文交给传输层。

IP协议报文:

网络编程的基本知识_第6张图片

网络层到传输层

 传输层将IP协议报文进行解析,将其中的IP协议报头去掉,取出其中的TCP协议报文。将TCP协议报文传给应用层。

TCP协议报文:

网络编程的基本知识_第7张图片

传输层到应用层 

应用层会调用socket ApI 从内核当中读取到这个应用层数据,再按照应用层协议进行解析,根据解析结果给显示到窗口。

网络编程的基本知识_第8张图片

总结

其实无论网络构造多么复杂,这里整体的传输过程都是相似的,只是在不停重复的封装和分用过程。正如下图所示:

你可能感兴趣的:(java,java-ee)