【java】网络编程之概念篇(一)

今天要补充的知识点是博主以前学java的时候遗漏(跳过)的一部分–网络编程!这个部分对往后的使用框架开发后端,很有帮助,属于基础块了,虽然我也会一点后端开发,但是没整套东西学,技术含量还是差一些,所以现在补上,算是扫盲了,这部分写得内容不会很官方,都是很通俗的语言来描述相关概念

网络通信涉及的内容

网络: 将不同区域的电脑连接到一起,组成局域网、城域网或广域网。

互联网:我们可以把它想象成一个网状结构,里面很多节点错综相连,其中这些节点就是一台电脑(或者其他设备),那么怎么让这些节点之间产生真正意义上的连接呢?就是通讯,那么通讯会存在什么问题呢?假如A电脑想要发信息给B电脑,但是在这样一个大网络中又不希望其他电脑能知道AB电脑的通信内容,因此人们就为了通讯方便,给每一台电脑都事先分配一个类似电话号码一样的标识地址,就是IP地址,也可以类比为这个人所居住的地址,找到这个人的地址,我们就可以联系这个人产生通讯了。

在这里插入图片描述
通讯协议: 计算机网络中实现通信必须由一些约定,就是通信协议,协议对速率、传输代码、代码结构、传输控制步骤、出错控制等都制定了标准。
通信接口: 为了使得两个结点之间能进行对话,必须在他们之间建立通信工具(即接口),使得彼此之间能进行信息交换。接口包括两部分:

  • 硬件装置:实现节点之间的信息传送
  • 软件装置:规定双方进行通信的约定协议

网络分层

TCP/IP是一个协议族,按照OSI模型的层次划分,一共四层:应用层、传输层、互连网络层、网络接口层(物理+数据链路层)。

osi

数据封装

在这里插入图片描述图来源:https://blog.csdn.net/weixin_43836778/article/details/103956723

数据封装(Data Encapsulation) 是指将协议数据单元(PUC)封装在一组协议头和协议尾的过程。在OSI模型中,每层主要负责与其他机器上的对等层进行通信,这个过程是在PUC中实现的,其中每一层的PUC都是由本层的协议头、协议尾和数据封装构成的。封装的顺序是:从高层到底层,逐层进行数据封装

对于上图来说,封装的过程是:

  1. 应用层:准备数据
  2. 传输层:接收应用层数据,添加TCP的控制信息(称为TCP头部),得到的数据单元为段(Segment),然后将段交给网络层
  3. 网络层:接收到段,添加IP头部,得到的数据单元为包(Packet),然后将包交给数据链路层
  4. 数据链路层:接收到包,添加MAC头部和尾部,得到的数据单元为帧(Frame),然后将帧交给物理层
  5. 物理层:将接收到的数据转化为比特流,然后在网线中传送

数据拆封

在这里插入图片描述
图来源:https://blog.csdn.net/weixin_43836778/article/details/103956723

数据拆封(Data dismantling) 是指将接收到的数据进行拆包,每一层只把对该层有意义的数据拿走(或者说是每一层只能处理发送方同等层的数据),然后把其余的部分传递给上一层。拆封的顺序是:从底层到高层,逐层进行数据解封装

对于上图来说,拆封步骤是:

  1. 物理层:接收到比特流,经过处理后将数据交给数据链路层
  2. 数据链路层:将接收到的数据转化为数据帧,再除去MAC头部和尾部,然后将包交给网络层
  3. 网络层:接收到包后,除去IP头部,然后将段交给传输层
  4. 传输层:接收到段后,除去TCP头部,然后将数据交给应用层
  5. 应用层:处理数据

IP地址

IP地址(Internet Protocol Address)用来定位网络中的一个节点(电脑,路由或通信设备),在互联网上,每台计算机和其他设备都有一种统一的地址,称为”IP地址“。需要注意的是每台电脑的IP地址并不是只有一个,看我们上面举的例子,一个人可以有多个手机号码,也可以有多个居住地址,IP地址不等同于人的身份证号码,它并不是只有一个,我们可以指定一台计算机具有多个IP地址。根据位数不同,IP地址又可分为两类:

  • IPv4:32位地址,点分十进制表示,即使用"."来分割,每个位都是十进制数字。如192.168.0.1
  • IPv6:128位地址(32位不够用,另外设置的),采用16进制来表示。

还有些特殊的IP地址需要我们记住,如127.0.0.1表示本机地址,192.168.0.0至192.168.255.255。科普一句,黑客一般是通过IP地址对电脑进行攻击的。

端口

端口(Port) 有两个意思:一个是物理意义上的端口**(硬件端口)** ,也就是计算机或主机上预留的一些外部接口,用来连接其他设备的。第二个是逻辑意义上的端口 (软件端口) ,一般指TCP/IP协议中的端口。在这里,主要讲是软件的端口。同一台电脑里面有很多软件(应用程序),端口是用来定位软件,端口号是由1个16位的二进制组成的,占2个字节,对应十进制的范围是0到65535。按端口号可分为三类:

  • 公认端口(Well Known Ports):0-1023
  • 注册端口(Registered Ports):1024-49151
  • 动态/私有端口(Dynamic / Private Ports):49152-65535

一些特定的端口号:

  • 常用的保留TCP端口号:HTTP 80,FTP 20/21,DNS 53,Telnet 23等
  • 常用的保留UDP端口号:DNS 53,BootP 67(server)/68(client),TFTP 69等
  • tomcat端口:8080
  • Oracle端口:1521
  • MySQL端口:3306

需要注意的点:自定义的端口号尽可能大,在1024以上,同一个协议下端口号不能重复。

URL

URL(Uniform Resource Locator) 也叫统一资源定位符,由于同一个软件(应用程序)里面会有很多资源,用来定位资源的。它按照互联网的大小分为:局域网URL和公网/外网URL,其基本格式是:schema://host[:port#]/path…/[?query-string]

  • schema:指的是底层使用的协议,比如文件传输协议使用ftp,网络传输协议使用http或https
  • host:指的是服务器,通常为IP地址或域名,如果是公网的HTTP服务器的IP地址或域名,如果是局域网中本机的话,那就是指locahost,或127.0.0.1
  • port#:指的是端口号,HTTP服务器的默认端口号是80,这个可以省略,如果使用其他端口号则必须指明
  • path:访问资源的路径,以“/”区分路径中每个目录名称
  • query-string:发送给Web服务器的数据

协议

osi
协议:指的是交流的方式,它是根据OSI模型来定义出不同的协议。

  1. 应用层:有文件传输协议FTP,网络协议HTTP等
  2. 传输层:有TCP/UDP协议
  3. 网络层:有IP地址协议等
  4. 网络接口:有各种通信网络接口的协议。

总结

介绍了相关概念。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章