网络编程原理进阶___TCP/IP(javaee)(1)

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
.cn 域名,1个 12个月
简介: 网络编程原理进阶___TCP/IP(javaee)(1)

网络编程原理进阶

我们的进阶内容比网络编程初始比较深入!我们通过这一章节的学习可以掌握网络编程原理,对网络编程有了初步认识!

我们这里的学习也从五层网络协议逐层进行学习!

我们先来复习一下这五层协议的功能


应用层

应用层协议主要由程序员编写,指定发送的信息和发送的信息的格式

重点学习htttp协议

传输层

传输层协议报头保存了源端口和目的端口,用来明确两台主机交换的服务器

重点学习TCP/UDP协议

网络层

网络层协议报头保存了源IP和目的IP,明确了网络传输的主机位置

数据链路层

数据链路层是由一些路由器/交换机,保证了相邻设备的传输,并且数据链路层,帧头保存了每次相邻设备的位置信息会不断的更新数据!

物理层

物理层就是硬件设备

我们重点掌握 应用层和传输层协议!

像其他3层协议身为搬砖程序员不需要了解,这是操作系统内核,除非是系统开发工程师,驱动开发工程师!


应用层

我们知道应用层协议得我们程序员自己编写!

突然就一整个头大了,这咋编写呀,不要慌问题不大!

我们只需要明确需求,根据需求确定需要传输的信息,还有传输信息的格式!

我们根据传输的信息和传输的格式就可以完成了一个应用层协议的组织!

就是我们发送的请求,另一台主机可以根据这个应用层协议,获取到请求信息,然后发送响应!

就好比前端有一个需求请求,请求发送的后端,后端根据应用层协议就可以获取到请求内容给出具体响应,完成强后端的交互过程!


传输的信息


例如:我们有一个图书馆借阅查询的请求!


我们就要明确传输的信息!


(前端发送的请求)
1.用户id
2.查询的起始时间
3.查询的结束时间

这就是我们要传输的信息,明确了请求信息,我们后端就要根据请求给出响应信息!


(后端返回的响应)
1.查询成功(成功标志)
2.查询失败(失败原因)
3.结果数组(查询成功)
这里的结果数组就包含了响应信息
书籍名称
书籍借阅天数
是否已还
....

数据的组织格式

我们上面明确了传输的信息,当时还不够,我们需要约束数据的组织格式!

我们通过那种格式将数据进行传输,就好比你发送一个文件给好友,你要明确是用QQ发还是用微信发!而这里传输层协议也一样,我们需要约定数据的格式!


例如:我们以下面的格式进行传输!


请求格式形如:
bug郭/t20220506/t20220611
响应格式:
OK
三国演义/t29/t已还
水浒传/t3/t未还

上面的格式只是随便编写的一个格式,我们可以自行决定用那种格式进行传输,可以自行编写,只要保证请求和响应格式类型一样就可以!


这样自己编写格式,显然有点人编写的协议格式很拉垮,有点大佬写的格式很好!


而不同的数据组织格式

可读性和传输效率不同!

这时就有大佬发明了协议模板,我们只需要根据协议模板往上套即可!

协议模板


xml

//xml格式
<标签名>内容</标签名>

可以看到xml数据组织格式和html相同由标签和内容构成,可读性好!


--xml格式请求
<request>
  <id>bug郭</id>
  <startTime>20220511</startTime>
  <endTime>20220611</endTime>
</request>
--xml格式响应
<response>
  <result>
  <book>
    <name>三国演义</name>
    ....
  </book>
  </result>
</response>

这里的xml虽然可读性很好,但是标签太多,用这种方式组织数据,传输时,传输效率不高,有很多无效数据,很吃带宽!所以xml一般用于编写配置文件,已经渐渐淡出应用层协议数据组织格式的舞台!


json

json格式
{
 键:值,
 键:值,
 键:值,
 ...
}

json格式数据组织格式!


由{}保存一个json数据

键值对之间用,分割

键和值之间用:分割

最后一个键值对的,可有可无,json语法比较宽松,但是语法是不用的!

然后值可以是多种数据类型(数字,字符串,数字,json对象…)

这里的键默认是字符串,不需要用引号,但如果键中包含了特殊符号如 空格,-就需要用分号保存!

这里的值字符串由引号保存,单引号和双引号都可(一般没有区分字符和字符串类型通用)


//json格式请求
{
  name:'bug郭',
  startTime:'20220506',
  endTime:'20220611'
}
//json格式响应
{
  ok:true,
  reson:"",
  data:[
  {
  bookname:"三国演义",
  time:12,
  state:"已还"
  },
  {
  bookname:"水浒传",
  time:3,
  state:"未还"
  }
  ]
}

可以看到json相较于xml可读性也很好而且比较简洁,这是如今主流的一种应用层协议数据组织的格式!

可读性好,效率高!


protobuf

protobuf格式是纯二进制数据格式!

通过数据的顺序或者一些特殊符号来区分每个字段!

十分简洁,传输效率高!

我们会疑惑,二进制文件,那我们咱看得懂,怎样组织数据呀!

protobuf通过一个文件IDL请求方和响应方通过这个文件就可以知道每个数据是什么意思,用来描述数据格式,是一个辅助开发的工具!类似于C语言结构体!


这里就不做举例了!


显然这中格式的传输效率高,但是可读性差,不利于开发!

开发效率会下降!没有json主流!


通过上述对传输信息的学习和数据组织格式的学习我们可以知道应用层协议的设计也并不是很困难!


只要我们明确传输的信息(根据需求)

明确数据组织格式(参考现有模板xml,json,protobuf…)

除此之外,业界还有一些现成的,已经设计好的协议

我们并不是任何时候,都要自己从0开始设计一个应用层协议,我们也可以基于现有的协议稍加修改,进行二次开发!

最知名应用层协议就是http协议,我们后面会介绍!


DNS

DNS:域名系统(Domain Name System)

啥是域名呢?

我们知道每台主机设备都有自己的IP地址!通过这个IP地址我们就可以访问该主机!

联系我们实际上网过程,难道我们访问一个网站的服务器是通过IP地址访问的嘛?

显然不是我们那能记得住那些IP地址呀,如果访问一个服务器都要记下一个IP地址那谁还上网对吧!

域名系统就很好的解决了这个问题!我们的IP地址记不住就算了!

DNS通过一串英文单词标记一个IP地址,这一串英文单词就是这个网站的域名,通过这个域名就可以找到这个网站服务器的IP从而访问到服务器!


DNS就是管理域名的

刚开始时这些域名和IP地址的映射关系,保存在我们主机的系统文件中,通过这个文件,主机就可以根据域名找到IP地址!

image.png

系统中的这个hosts文件就保存着域名和IP地址的映射!

image.png


可以看到文件中这里IP127.0.0.1 通过域名local.id.seewo.com和 activate.navicat.com就可以访问.不过现在这种方式已经不用了!

DNS系统管理服务器

现在有一个专门管理域名的机构,通过这个机构,就可以申请登记域名和IP地址的映射关系,然后这个机构将这个映射关系保存在他的服务器上,在你的主机需要访问一个域名时,通过访问这个域名服务器就可以拿到这个域名对应的IP地址从而访问到服务器!


我们又想到一个问题,全世界这么多设备需要上网,如果都访问这个域名服务器那这个服务器不得挂!

确实如此,所以这个机构的域名服务器为根域名服务器,不同的区域还有响应的镜像域名管理系统服务器,不同的地方通过访问这个镜像服务器就可以获取到域名对应的IP.

我们的域名解析服务器有很多,我们的主机可以自己设置选择通过那个域名解析服务器解析域名!

image.png

我们通过这个设置就可以对域名解析器服务器进行选择!

默认是自动获取DNS也就是从运营商哪里获取!

也可以手动更改其他的域名解析服务器!


当我们浏览器查询一次域名解析服务器后,就会将这个结果保存在浏览器一段时间,下次访问就不用通过域名解析访问,可以直接访问了!


目录
相关文章
|
2月前
|
网络协议 安全 5G
网络与通信原理
【10月更文挑战第14天】网络与通信原理涉及众多方面的知识,从信号处理到网络协议,从有线通信到无线通信,从差错控制到通信安全等。深入理解这些原理对于设计、构建和维护各种通信系统至关重要。随着技术的不断发展,网络与通信原理也在不断演进和完善,为我们的生活和工作带来了更多的便利和创新。
69 3
|
24天前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
68 3
|
24天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
70 2
|
1月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
49 13
|
27天前
|
运维 物联网 网络虚拟化
网络功能虚拟化(NFV):定义、原理及应用前景
网络功能虚拟化(NFV):定义、原理及应用前景
42 3
|
1月前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
2月前
|
Web App开发 缓存 网络协议
不为人知的网络编程(十八):UDP比TCP高效?还真不一定!
熟悉网络编程的(尤其搞实时音视频聊天技术的)同学们都有个约定俗成的主观论调,一提起UDP和TCP,马上想到的是UDP没有TCP可靠,但UDP肯定比TCP高效。说到UDP比TCP高效,理由是什么呢?事实真是这样吗?跟着本文咱们一探究竟!
60 10
|
1月前
|
网络协议 安全 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理 、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
|
2月前
|
机器学习/深度学习 人工智能 监控
深入理解深度学习中的卷积神经网络(CNN):从原理到实践
【10月更文挑战第14天】深入理解深度学习中的卷积神经网络(CNN):从原理到实践
175 1
|
1月前
|
网络协议 安全 算法
网络空间安全之一个WH的超前沿全栈技术深入学习之路(9-2):WireShark 简介和抓包原理及实战过程一条龙全线分析——就怕你学成黑客啦!
实战:WireShark 抓包及快速定位数据包技巧、使用 WireShark 对常用协议抓包并分析原理 、WireShark 抓包解决服务器被黑上不了网等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!