网络编程学习总结

news/2024/11/12 20:36:55/文章来源:https://www.cnblogs.com/clswhde/p/18355522

Java 网络编程学习总结

本章目标

  • 了解计算机网络基础知识
  • 了解 OSI 七层参考模型
  • 熟悉 TCP/IP 协议
  • 熟悉常见网络协议
  • 掌握 socket 套接字编程

计算机网络

什么是计算机网络

计算机网络是通过传输介质、通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统。

什么是网络编程

网络编程就是编写程序使联网的两个(或多个)设备(例如计算机)之间进行数据传输。Java 语言对网络编程提供了良好的支持,通过其提供的接口我们可以很方便地进行网络编程。

什么是网络协议

如同人与人之间相互交流是需要彼此能够理解的语言,计算机之间能够进行相互通信是因为它们都共同遵守一定的规则,即网络协议。

什么是网络体系结构

计算机网络体系结构是计算机网络层次和协议的集合,网络体系结构对计算机网络实现的功能,以及网络协议、层次、接口和服务进行了描述,但并不涉及具体的实现。

OSI 七层参考模型

  • 应用层:应用层为OSI的最高层,是直接为应用进程提供服务的。
  • 表示层:表示层功能是把应用层提供的信息变换为能够共同理解的形式
  • 会话层:会话层的主要功能是负责应用程序之间建立、维持和中断会话
  • 传输层:传输层起着承上启下的作用,涉及源端节点到目的端节点之间可靠的信息传输
  • 网络层:网络层涉及源主机节点到目的主机节点之间可靠的网络传输
  • 数据链路层:数据链路层的功能是实现计算机网络中相邻节点之间的可靠传输
  • 物理层:数据链路层的功能是实现计算机网络中相邻节点之间的可靠传输

TCP/IP 四层协议

TCP/IP参考模型采用 4 层的层级结构,每一层都调用它的下一层所提供的协议来完成自己的需求

  • 应用层:应用层为 Internet 中的各种网络应用提供服务
  • 传输层:传输层负责在应用进程之间建立端到端的连接和可靠通信,它只存在与端节点中
  • 网络层:网络层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机
  • 网络接口层:TCP/IP协议对网络接口层没有给出具体的描述,网络接口层对应着OSI参考模型的物理层和数据链路层

TCP/IP 协议族

TCP/IP 协议关系

  • 上层协议依赖下层协议提供的支持与服务
  • 不同协议提供不同的服务以满足不同的网络需求

常见网络协议

IP 协议

IP 协议的作用在于把计算机网络中各种设备终端的数据包准备无误的传递给对方

  • IP 地址:IP 地址也叫逻辑地址或动态,由网络层路由器为计算机网络上的每一台主机分配的 32 位数字组成的地址,该地址可以动态修改,如 192.168.229.11
  • MAC 地址:MAC 地址也叫物理地址或硬件地址,由 48 比特长的 16 进制数字组成,由设备厂家分配全球唯一且不能修改,如 44-45-53-54-00-00
TCP 协议

TCP(传输控制协议)是面向连接的协议,它的作用是为不同主机的应用层之间建立可靠的、像管道一样的连接,以确保不同主机之间能够相互通信

TCP 的三次握手与四次挥手

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据

  • 第一次握手(客户端发送请求):客户机发送连接请求报文段到服务器,并进入SYN_SENT状态,等待服务器确认。
  • 第二次握手(服务端回传确认):服务器收到客户端连接请求报文,如果同意建立连接,向客户机发回确认报文段(ACK)应答,并为该TCP连接分配TCP缓存和变量。
  • 第三次握手(客户端回传确认):客户机收到服务器的确认报文段后,向服务器给出确认报文段(ACK),并且也要给该连接分配缓存和变量。此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
UDP 协议

UDP(用户数据报协议),它是 TCP/IP 协议簇中无连接的传输层协议,提供快速但不一定可靠的传输服务

UDP协议由两部分组成:首部和数据。首部仅有8个字节,包括源端口和目的端口、长度(UDP用于数据报的长度)、校验和

TCP 与 UDP 区别

HTTP 协议

HTTP(超文本传输协议),是一种为分布式、合作式、多媒体信息系统服务,面向应用层的协议,是 Internet 上目前使用最广泛的应用层协议,它基于传输层的 TCP 协议进行通信,HTTP 协议是通用的、无状态的协议。

Socket 编程

Socket 套接字

Socket 套接字,实际上是对 TCP/IP 协议的封装,Socket 本身并不是协议,而是一个调用接口(API),通过 Socket,我们才能使用 TCP/IP 协议。

  • Socket 是通信的基石,是支持 TCP/IP 协议的网络通信的基本操作单元
  • TCP/IP 只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。TCP/IP 也要提供可供程序员做网络开发所用的接口,这就是 Socket 编程接口(支持 TCP 或者 UDP 编程接口)
  • Java 网络编程主要涉及到的内容是 Socket 套接字编程
网络通信五要素

Socket 通信模型

Socket 编程 = Socket 客户端编程(Client) + Socket 服务器端编程(Server)

Socket 客户端编程
  • 步骤一:创建 Socket 套接字实例(绑定服务器端 IP 地址和端口号)

    Socket socket = new Socket(“127.0.0.1”, 9999 );
    
  • 步骤二:创建网络输入/输出流

    InputStream inputStream    = socket.getInputStream();
    OutputSteam outputStream = socket.getOutputStream()
    
  • 步骤三:关闭 Socket 连接

    socket.close();
    
Socket 服务器端编程
  • 步骤一:创建 ServerSocket 套接字实例(绑定监听端口号)

    ServerSocket serverSocket = new ServerSocket( 9999 );
    
  • 步骤二:监听来自客户端的网络连接

    Socket socket = serverSocket.accept();
    
  • 步骤三:创建网络输入/输出流

    InputStream inputStream    = serverSocket.getInputStream();
    OutputSteam outputStream = serverSocket.getOutputStream()
    
  • 步骤四:关闭 Socket 连接 和 ServerSocket 连接

    socket.close();
    serverSocket.close();
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/781872.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盘点两种方法来判断一个列表里面,按关键词进行筛选,留下包含有关键词的论文题目

大家好,我是Python进阶者。 前言 前几天才哥群里有个粉丝提问,忘记是谁了,过去有段时间,当时没来得及截图,不知道谁问的了,不过题目当时记下来了,如下图所示。看上去并不是很难的样子,这个示例代码,看上去逻辑什么的也没有问题,但是结果输出就是有些不对。究其原因,…

08.计划任务课后习题

08.计划任务课后习题 1.在linux系统中备份脚本backup.sh需要再每周1-5的每天下午1点和晚上8点执行,下列哪个cron命令可以完成(D)分 时 日 月 周 a. 0 13,20 * 1,2,3,4,5 * backup.sh 1到5月的下午一点和晚上八点执行 b. 0 13,20 1,5 * * backup.sh 每个月一号…

Paper Reading: OpenFE: Automated Feature Generation with Expert-level Performance

本文提出了一种自动特征生成模型 OpenFE,它通过一个特征增强算法和一个两阶段修剪算法来解决 expand-and-reduce 框架的挑战。本文认为模型再训练并不需要准确评估新特征的增量性能,在梯度增强的启发下提出了一种用于评估新特征增量性能的高效算法 FeatureBoost。同时本文提出…

sqlmap:linux(ubuntu)上安装sqlmap

一,官方地址 1,官网: https://sqlmap.org/ 2,官方代码地址: https://github.com/sqlmapproject/sqlmap二,安装 1,安装准备:注意看,要保证本地具备python环境 2,下载 liuhongdi@lhdpc:/usr/local/source/sqlmap$ git clone --depth 1 https://github.com/sqlmapproject/sqlm…

kafka+cmak+kerberos部署配置

实验环境:(这里都是单机的,集群的,可以正常部署集群,配置一样的)使用了火山引擎的云服务器(4c8g)jdk环境是1.8.0_352,后面有雷点,cmak需要用jdk11,这里我去官网扒拉jdk11没找到,所以我通过docker基础镜像制作的zookeeper的版本是3.7.2kafka版本是2.0.1(主要是生产…

AtCoder Regular Contest 182

原来第二题比第一题简单吗😢 A.Chmax Rush! \(\texttt{Diff 1110}\)给定三个序列 \(S,P,V\),其中 \(S\) 的长度为 \(N\),\(P,V\) 的长度为 \(Q\),按从小到大的顺序对每个 \(i\in[1,Q]\) 执行下述操作: 在 \([1,P_{i}]\) 和 \([P_{i},N]\) 中选择一个区间,要求其中所有的…

「代码随想录算法训练营」第三十五天 | 动态规划 part8

121. 买卖股票的最佳时机题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/ 文章讲解:https://programmercarl.com/0121.买卖股票的最佳时机.html 题目难度:简单 视频讲解:https://www.bilibili.com/video/BV1Xe4y1u77q 题目状态:有一半的思路思路…

【GeoScene】三、GeoScene Enterprise 3.1 在银河麒麟V10上安装部署

前言: 哈哈哈,想到什么就写什么了,没有顺序可言 系统要求:性能越高越好😆😆 然后是下载安装包、连接服务器、上传文件就不写了吧,这些应该都会吧 许可让公司商务找易智瑞的售前申请 一、环境准备 1、关闭防火墙(可选) 停止防火墙:systemctl stop firewalld.service…

yum网络源的配置

yum 的原理 yum 的全称是 Yellow dog Updater,Modified,yum 是 CentOS 或者是 RedHat 中最常见的包管理器。早期的 Linux 发行版安装软件包要解决软件包的依赖问题,这些依赖的问题需要人工手动解决,通常是需要安装的软件有多个依赖,依赖又有其他的依赖所以自行手动安装很麻…

网络划分

视频 子网划分 用 子网掩码 子网掩码 = 网络位 + 主机位 ip地址自然分类127.0.0.1理解为什么进行子网划分 掌握怎么进行子网划分

谷歌浏览器降级的方法-及chromedriver 下载文件

为了适配python selenium 使用 chromedriver 对应当前谷歌浏览器,降级 https://www.chromedownloads.net/chrome64win/#google_vignette 这个地址为谷歌浏览器老版本的地址http://chromedriver.storage.googleapis.com/index.html 这个地址为谷歌浏览器对应的 chromedriver 的…

记录兼职运维的一天

不以物喜,不以己悲,挣钱为主1.背景 7月底部门的运维大哥离职了,奈何又没有新运维接替,至于为什么没有补位,懂得都懂,按老大的意思是先让开发一人顶一块,8月底争取补上。 打心底我有点排斥这事,但是人到中年又有什么办法呢,上有老下有小,唯有苟。 分派给我的部分是服务…