当前位置: 首页 > news >正文

《Java网络编程》第一章:基本网络概念

网络(network)

是几乎可以实时相互发送和接受数据的计算机和其他设备的集合

  • 网络中的每台机器称为节点(node),具有完备功能的计算机节点也成为主机(host)
  • 每个网络节点都有地址(address)作为唯一标识,为字节序列
  • 为包交换网络,将流经网络的数据分割为小块,每个包都包含有谁发出和将发往何处的信息。优点:可以在多条线缆上传出。可以进行校验
  • 协议(protocol),包括地址格式,数据如何分包等

网络的分层

网络通信的不同层面被分解为多层,每一层只与其上下的层对话。解耦合

两个客户端之间的对话

传送端:应用层-》传输层-》网际层-》网络层

  • 传输层将请求分解为TCP片,像数据添加序列号和校验和
  • 网际层根据本地网络所需的大小将TCP片分成IP数据包

接收端:网络层-》网际层-》传输层-》应用层

  • 传输层检查所有的数据是否到达,没到达的要求重传(这个请求向下通过服务器的网际层,再通过服务器主机网络层,回到客户端系统,然后再在客户端系统向上返回。这些过程对于应用层是完全透明的

主机网络层(host-to-work layer)

定义了一个特定的网络接口(如网线)如何通过物理连接向本地网络或世界其他地方发送IP数据报

成为网络的物理层

网际层(Internet layer)

网络层协议定义了数据位和字节如何组织为更大的分组,称为包。定义了寻址机制

在IPv4和IPv6中,数据按包在网际层传输,被称为数据报(datagram)。每个IPv4数据报包含一个长度为20-60字节的首部,以及65515字节数据的有效载荷(payload)

第二个作用是支持不同类型的主机网络层相互对话

传输层(transport layer)

原始数据报缺点:不能保证可靠传送(顺序,完整性)

传输层负责确保各包以发送的顺序接收,并保证没有数据丢失或损坏

IP网络会给每一个数据报添加一个附加首部,以实现传输层的功能。主要有两个协议。

  • 传输控制协议(Transmission Control Protocol,TCP): 开销高,支持重传和按顺序传送。为可靠的(reliable)协议
  • 用户数据报协议(User Datagram Protocol,UDP):开销低,允许接收方检测被破坏的包,不保证以正确的顺序传送。为不可靠的(unreliable)协议

应用层(application layer)

向用户传送数据,它下面三层的操作共同确定了一个数据如何从一个计算机传送到另一个计算机上,确定了数据传输后的操作。

IP,TCP与UDP

IP设计为允许任意两点之间有多个路由

开放的,与平台无关

将TCP置于IP之上才能保证顺序与重传

IP之上可以运行其他很多协议。最常使用的是ICMP,即国际控制消息协议(Internet Control Message Protocol),使用原始IP数据报在主机之间传递错误信息。

Java支持的协议只有TCP与UDP和建立在此之上的应用层协议

IP地址和域名

IPv4网络中的每台计算机都有一个4字节的数字标识。一般写为点分四段(dotted quad)格式,如199.1.32.90。当数据传送时,包的首部都会包括目的地址和源地址。

IPv6使用16个字节地址

有些计算机(特别是服务器)有固定的地址,其他计算机(局域网和无线连接上的客户端)可能每次启动时会收到不同的地址,通常由DHCP服务器提供。因此写代码时不要假定系统有固定的IP地址,要在程序启动时进行一次查询。每次需要时检查IP地址而不是缓存

端口

每个端口可以分给一个特定的服务

Internet

Internet是世界上最大的基于IP的网络,其他的网络称为internet

为确保Internet上不同网络的主机可以相互通信,需要遵守一些对纯粹内部internet不适用的规则。处理不同组织个人公司地址的分配

Internet地址分块

当公司或组织要建立一个基于IP的网络连接到Internet时,它们的ISP(Internet服务供应商)会分配给他们一个地址块。每个地址块有固定的前缀

网络地址转换

由于IP地址越来越稀缺,面对原始IP地址的需求越来越大,如今大多数网络都使用了网络地址转换(Network Address Translation,NAT)

基于NAT的网络中,大多数节点只有不可路由的本地地址,将本地网络连接到ISP的路由器会把这些本地地址转换为更小的一组可路由的地址

防火墙

位于Internet和本地网络之间的一些硬件和软件会检查所有进出的数据,以确保其合法性,这就称为防火墙。

可以完成网络地址转换

工作与传输层和网际层

代理服务器

起一个网络上的主机与外界联系的中间人的作用。

可以用于FTP服务和其它连接

工作于应用层,对应用层协议非常了解。可以检查通过代理服务器的包,确保其中包含适当类型的数据。

可以用来实现本地缓存。当请求Web服务器的文件时,代理服务器首先查看自己有没有,如果有直接给不请求服务器。如果没有再从服务器中获取并缓存

优势:

        不知道内部机器的主机名和IP地址,更安全

        问题在于无法应对所有协议

客户/服务器模型

服务器主要发送数据,客户端主要接收数据。在一些情况下,同一个程序会同时作为客户端和服务器。

对等(peer-to-peer)连接就是如此

http://www.dtcms.com/a/389226.html

相关文章:

  • Python内存机制全解析:从基础到高级应用
  • Ubuntu24修改ssh端口
  • hadoop实现一个序列化案例
  • DBG数据库加密网关实现mySQL敏感数据动态脱敏与加密全攻略
  • 解决 Vue SPA 刷新导致 404 的问题
  • 大型语言模型 (LLMs) 的演进历程:从架构革命到智能涌现
  • 大语言模型为什么要叫【模型】
  • 教程上新丨ACL机器翻译大赛30个语种摘冠,腾讯Hunyuan-MT-7B支持33种语言翻译
  • 《C++程序设计》笔记
  • NVR接入录像回放平台EasyCVR海康设备视频平台视频监控系统常见故障与排查全解析
  • 半导体制造常提到的Fan-Out晶圆级封装是什么?
  • Qt 系统相关 - 文件
  • P2242 公路维修问题
  • 安装wsl
  • 牛客多校04C :Computational Geometry Problem(p-Dyck路计数)
  • CMake+visual studio 2022 +qt6 , 从Linux平台移植到windows下平台开发
  • 大模型系列——Playwright MCP 可以复用 Chrome 登录态了
  • 三星S25 Edge 与iPhone 17 Air:最新对比
  • 电脑怎么连接wifi?【图文详解】笔记本电脑怎么连接无线wifi?笔记本电脑连不上wifi怎么办?
  • 设计模式-代理模式详解
  • 怎样让AI图生3D更加高质高效
  • Java 集合框架 Set 接口:实现类的底层数据结构与核心特点
  • 【大模型】使用Qwen-VL大模型进行验证码识别的完整指南
  • 深度学习体系化入门:从理论到实践的完整框架
  • 餐饮行业系统集成分享:OMS 订单数据推送ERP 核算
  • 深入剖析OpenHarmony ClearPlay DRM驱动:从HDI接口到动态加载的完整实现路径
  • [WesternCTF2018]shrine
  • 硬件 - RK3588部分(2) - 原理图 - 最小系统
  • Android进阶之路 - 从 URL Scheme 到 Deep Link 与 App Link
  • MySQL监控Shell脚本实战指南