网络编程 网络原理

news/2024/5/18 11:52:34 标签: 网络, 服务器, udp

目录

1.网络编程概念

2.网络编程中的基本概念

2.1发送端 接收端 收发端

2.2请求和响应

2.3客户端服务端

2.4Socket套接字

2.4.1概念

2.4.2分类

2.4.3Socket通信的基本步骤

2.5Socker API

 2.6封装/分用 vs 序列化/反序列化


1.网络编程概念

网络编程指网络上的主机上,通过不同的进程,以编程的形式实现网络通信(或称为网络数据传输)。

只需满足进程不同即可,即便同一个主机,只要是不同的进程,基于网络来传输数据,也属于网络编程。

2.网络编程中的基本概念

2.1发送端 接收端 收发端

再一次数据传输时:
发送端:数据的发送方进程,称为发送端,发送端主机即网络通信中的源主机

接收端:数据的接收方进程,称为接收端,接收端主机即网络通信中的目的主机

收发端:发送端和接收端两端,称为收发端。

发送端与接收端是相对的,只是一次网络数据传输产生的数据流向后的概念。

2.2请求和响应

为获取一个资源时,涉及到两次网络数据传输:
第一次:请求数据的发送

第二次:响应数据的发送

2.3客户端服务端

服务端:在常见的网络数据传输的场景下,把提供服务的一方进程称为服务端,可以对外提供服务。

客户端:获取服务的一方进程。

2.4Socket套接字

2.4.1概念

Socket是由系统提供用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元,基于Socket套接字的网络程序开发就是网络编程。

2.4.2分类

流套接字:使用传输层TCP协议。

数据报套接字:使用传输层UDP协议。

原始套接字:原始套接字用于自定义传输层协议,用于读写内核没有处理的IP协议数据。

Java数据报套接字通信模型

对于UDP协议来说,具有无连接,面向数据报的特征,即每次都是没有建立连接,并且一次发送全部数 据报,一次接收全部的数据报。 java中使用UDP协议通信,主要基于 DatagramSocket 类来创建数据报套接字,并使用 DatagramPacket 作为发送或接收的UDP数据报。对于一次发送及接收UDP数据报的流程如下:

 Java流套接字通信模型

 

2.4.3Socket通信的基本步骤

根据socket通信基本流程图,总结通信的基本步骤:
服务器端:
第一步:创建一个用于监听连接的Socket对像;
第二步:用指定的端口号和服务器的ip建立一个EndPoint对象;
第三步:用socket对像的Bind()方法绑定EndPoint;
第四步:用socket对像的Listen()方法开始监听;
第五步:接收到客户端的连接,用socket对像的Accept()方法创建一个新的用于和客户端进行通信的socket对像;
第六步:通信结束后一定记得关闭socket;
客户端:
第一步:建立一个Socket对像;
第二步:用指定的端口号和服务器的ip建立一个EndPoint对像;
第三步:用socket对像的Connect()方法以上面建立的EndPoint对像做为参数,向服务器发出连接请求;
第四步:如果连接成功,就用socket对像的Send()方法向服务器发送信息;
第五步:用socket对像的Receive()方法接受服务器发来的信息 ;
第六步:通信结束后一定记得关闭socket;

2.5Socker API

Socket 是客户端Socket,或服务端中接收到客户端建立连接(accept方法)的请求后,返回的服务端 Socket。 不管是客户端还是服务端Socket,都是双方建立连接以后,保存的对端信息,及用来与对方收发数据的。

 2.6封装/分用 vs 序列化/反序列化

一般来说,在网络数据传输中,发送端应用程序,发送数据时的数据转换(如java一般就是将对象转换 为某种协议格式),即对发送数据时的数据包装动作来说:

如果是使用知名协议,这个动作也称为封装

如果是使用小众协议(包括自定义协议),这个动作也称为序列化,一般是将程序中的对象转换为 特定的数据格式。

接收端应用程序,接收数据时的数据转换,即对接收数据时的数据解析动作来说:

如果是使用知名协议,这个动作也称为分用

如果是使用小众协议(包括自定义协议),这个动作也称为反序列化,一般是基于接收数据特定的 格式,转换为程序中的对象


http://www.niftyadmin.cn/n/1544281.html

相关文章

ASP.NET MVC5+EF6+EasyUI 后台管理系统(57)-插件---ueditor使用

系列目录 目录: 前言开发环境知识点初始使用自定义工具栏设置和读取编辑器内容文件上传ueditor加水印------------------------------------------------ 下载地址在尾部 1.前言:之前一直用KingEditor富文本编辑器,在国产编辑器中算是顶尖的插件。但是这…

win7语音识别组件安装_kinect应用开发实践——Kinect v2安装、环境搭建、测试

Kinect v2安装、环境搭建、测试Kinect v2硬件安装图组装图各部件说明图pc端环境搭建1、软/硬件需求Kinect V1版本只需要Win7USB2.0Win7以上系统即可使用,到了V2版本之后,Kinect的性能也更高了!从软硬件角度讲,有几个硬性的条件&am…

BZOJ-3576 江南乐 博弈+优化

fye测试原题,高一全跪,高二学长除了CA爷似乎都A辣(逃)3576: [Hnoi2014]江南乐 Time Limit: 30 Sec Memory Limit: 512 MB Submit: 1099 Solved: 408 [Submit][Status][Discuss] Description 小A是一个名副其实的狂热的回合制游戏玩家。在获得了许多回合制游戏的世界级奖项之…

进程和线程知识点总结1

目录 一.概念 1.线程是什么 2.为什么要有线程 3.进程和线程的区别 4.java线程和操作系统线程的关系 二.创建线程的四种方式 方法一 继承Thread类 方法二 实现Runnable接口 方法三 通过ExecutorService和Callable接口实现有返回值的线程 方法四 基于线程池的execute(),…

vlan配置实例详解_网工知识角|MUXVLAN技术详解,基本原理一篇搞定

学网络,就在IE-LAB国内高端网络工程师培养基地MUX VLAN(Multiplex VLAN )提供了一种通过VLAN进行网络资源控制的机制。通过MUX VLAN提供的二层流量隔离的机制可以实现企业内部员工之间互相通信,而企业外来访客之间的互访是隔离的。为了实现报文之间的二层…

构建之法读书1

概论 1软件程序软件工程 当我看到这个题目时,我脑中有两个疑问,什么是程序,什么又是所谓的软件工程。接下来读下去,书中所说程序就是数据结构加上算法,这也是普遍认可的,也是我们上课老师对我们说的。那么什…

Java多线程之wait()、join()、sleep()

wait()、join()、sleep()区别和相似粘贴总结自两篇文章 目录 java中的wait()方法 java中的join()方法 wait()方法和join()方法的相似处 wait()方法和join()方法之间的区别 wait()和sleep() 原文链接:https://blog.csdn.net/weixin_39636253/article/details/1…

openssl生成ssl证书

openssl生成ssl证书 x509证书一般会用到三类文,key,csr,crt。Key 是私用密钥openssl格,通常是rsa算法。 Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使用自己的私钥来签署申,还可…