博客
关于我
Java 网络编程(一) 网络基础知识
阅读量:445 次
发布时间:2019-03-06

本文共 1245 字,大约阅读时间需要 4 分钟。

网络编程基础

网络编程的核心目标

网络编程的核心目标是通过网络协议与其他计算机进行信息交换。网络编程需要解决两个关键问题:如何准确地定位网络上的主机,以及如何在主机之间可靠、高效地进行数据传输。

常见的网络编程模型

目前主流的网络编程模型是客户端/服务器(C/S)结构。在这个模型中,通信双方一方作为服务器,等待另一方(客户端)提出请求并提供相应服务。服务器通常运行在固定的位置,持续监听特定的网络端口。一旦接收到客户端的请求,服务器会启动一个服务线程来响应客户端的需求,同时继续监听,确保后续客户端请求也能得到及时处理。

IP地址的作用

IP地址是网络中每台主机的唯一标识符,属于逻辑地址。互联网中的IP地址具有全球唯一性。IP地址由四个字节组成,共计32位,通常用点分十进制格式表示。例如:192.168.0.200。

协议的定义

协议是网络中数据交换的规则和标准,用于确保数据在不同主机之间能够正确传输。网络中的协议分为不同的层次,例如:

  • 应用层:负责数据的具体应用需求,如HTTP、FTP、DNS等。
  • 传输层:提供端到端的通信服务,如TCP和UDP协议。
  • 网络层:负责数据的路由和寻址,如IP协议。
  • 数据链路层:负责数据在物理介质上的传输,如以太网协议。
  • 物理层:负责二进制数据的传输。

OSI参考模型将这些功能分为七个层次,并强调各层之间的严格依赖关系。通信实体之间通过对等层间接通信,实际的数据传输依然发生在物理层。

OSI七层模型详解

OSI参考模型将网络功能划分为七个层次:

  • 应用层:处理具体的网络应用需求,如文件传输、网络查找等。
  • 表示层:定义数据的表示方式。
  • 会话层:管理主机间的通信会话。
  • 传输层:提供端到端的通信服务,如TCP和UDP协议。
  • 网络层:负责数据的寻址和路由选择。
  • 数据链路层:负责数据在物理介质上的传输。
  • 物理层:实现二进制数据的传输。
  • 通信实体之间通过对等层进行交互,实际的数据传输依然发生在物理层。这种分层架构使得网络互联问题得以有效解决。

    端口号的作用

    在网络传输中,数据不仅需要目标主机的IP地址,还需要目标应用程序的端口号。端口号是一个16位的数字(0~65535),用于标识应用程序。

    端口号的作用是:

  • 在网络中区分同一主机上的多个应用程序。
  • 指定数据的具体处理程序。
  • TCP和UDP协议各自维护独立的端口号空间。例如,HTTP协议通常使用80端口,FTP协议使用21端口。

    数据封装

    在网络通信中,数据需要经过封装的过程。封装是指在数据前面添加特定的协议头部。例如,OSI参考模型中,数据在不同的层面会被多次封装,形成多层“信封”。

    封装的过程包括:

  • 数据打包:将数据按照特定格式进行整理。
  • 头部添加:在数据前面添加协议头部,包含控制信息。
  • 传输:通过物理介质进行数据传输。
  • 拆封:在目标主机中逐层拆除协议头部,提取原始数据。
  • 这种多层封装机制确保了数据在复杂网络环境中的准确传输。

    参考资料

    • 《圣思园张龙老师Java SE系列视频教程》

    转载地址:http://xyqyz.baihongyu.com/

    你可能感兴趣的文章
    nnU-Net 终极指南
    查看>>
    No 'Access-Control-Allow-Origin' header is present on the requested resource.
    查看>>
    NO 157 去掉禅道访问地址中的zentao
    查看>>
    no available service ‘default‘ found, please make sure registry config corre seata
    查看>>
    no connection could be made because the target machine actively refused it.问题解决
    查看>>
    No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
    查看>>
    No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
    查看>>
    No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
    查看>>
    No mapping found for HTTP request with URI [/...] in DispatcherServlet with name ...的解决方法
    查看>>
    No mapping found for HTTP request with URI [/logout.do] in DispatcherServlet with name 'springmvc'
    查看>>
    No module named 'crispy_forms'等使用pycharm开发
    查看>>
    No module named cv2
    查看>>
    No module named tensorboard.main在安装tensorboardX的时候遇到的问题
    查看>>
    No module named ‘MySQLdb‘错误解决No module named ‘MySQLdb‘错误解决
    查看>>
    No new migrations found. Your system is up-to-date.
    查看>>
    No qualifying bean of type XXX found for dependency XXX.
    查看>>
    No resource identifier found for attribute 'srcCompat' in package的解决办法
    查看>>
    no session found for current thread
    查看>>
    No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
    查看>>
    NO.23 ZenTaoPHP目录结构
    查看>>