网络编程 网络原理

目录

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一般就是将对象转换 为某种协议格式),即对发送数据时的数据包装动作来说:

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

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

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

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值