1.什么是网络、计算机网络的构成是什么?

在计算领域中,网络是传输信息、接受、共享的虚拟的平台。

通过它可以把各个点、面、体的信息联系到一起,从而实现这些资源的共享。

网络是人类发展史上最重要的发明,提高了人类和科技的一个发展。

2.什么是网络编程?

网络编程从大的方面就是说对信息的发送接收。

通过操作相应API调度计算机资源硬件,并且利用管道(网线)进行数据交互的过程。

更为具体的涉及:网络模型、套接字、数据包

3. 7层网络模型--OSI

基础层:物理层(physical)、数据链路层(Datalink)、网络层(network).。

传输层(Transport):TCP-UDP协议层、Socket。

高级层::会话层(Session)、表示层(Presentation)、应用层(Application)

4. 网络模型---对应关系

5.Socket与TCP、UDP 

Socket: 简单来说是ip地址与端口的结合协议(RFC 793).

一种地址与端口的结合描述协议。

TCP/IP协议的相关API的总称;是网络API的集合实现.

涵盖了Stream socket /Datagram Socket

socket 的组成与作用:

在网络传输中用于唯一标识两个端点的链接。

端点:包括(ip+port)

4个要素:客户端的地址、客户端的端口、服务器的地址、服务器端口。

6. Socket的传输原理

Socket之TCP:

tcp是面向连接的通讯协议。

通过三次握手建立连接,通讯完成时要拆除连接。

由于TCP是面向连接的,所以只能用于端到端的通信。

Socket之UDP:

UDP是面向无连接进行通讯的。

UDP数据包括目的端口号和源端口号信息。

由于通讯时是不需要连接,所以可以是实现广播发送,并不局限于端到端。

TCP传输图解:

UDP传输图解:

7.Client-Server Application

TCP/IP协议中,两个进程间通信的主要模式为CS模型

主要的目的:协调网络中计算机资源、服务模式、进程间数据共享

常见的FTP、SMTP、HTTP

8.报文段

报文段是指TCP/IP协议网络传输过程中,起着路由导航作用。

可以查询各个网络路由网段、IP地址、交换协议等ip数据包。

报文段充当整个TCP/IP协议数据包的导航路由功能。

报文在传输过程中会不断的封装成分组、包、帧来传输。

封装的方式就是添加一些控制信息组成的首部,即报文头。

9.传输协议

一种约定,约束

约定大于配置,在网络传输中依然食用;网络的传输是健壮的稳定的,得益于基础的协议构成。


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;/*** @Author: itwang @Description: @Date: Created in 22:40 2018/12/29 @Package: PACKAGE_NAME @Modified* By:*/
public class Server {public static void main(String[] args) throws Exception {ServerSocket serverSocket = new ServerSocket(2000);System.out.println("服务器准备就绪----");System.out.println("服务器信息:" + serverSocket.getInetAddress() + "p:" + serverSocket.getLocalPort());for (; ; ) {// 等待客户端连接Socket client = serverSocket.accept();// 客户端构建异步线程ClientHandler clientHandler = new ClientHandler(client);// 启动线程clientHandler.start();}// todo(client);}/** 客户端消息处理 */private static class ClientHandler extends Thread {private Socket socket;private boolean flag = true;ClientHandler(Socket socket) {this.socket = socket;}/*** If this thread was constructed using a separate <code>Runnable</code> run object, then that* <code>Runnable</code> object's <code>run</code> method is called; otherwise, this method does* nothing and returns.** <p>Subclasses of <code>Thread</code> should override this method.** @see #start()* @see #stop()* @see #(ThreadGroup, Runnable, String)*/@Overridepublic void run() {super.run();System.out.println("客户端连接:" + socket.getInetAddress() + "p:" + socket.getPort());try {// 得到打印流,用于服务器输出;服务端回送数据PrintStream socketOutPut = new PrintStream(socket.getOutputStream());// 得到输入流BufferedReader socketInput =new BufferedReader(new InputStreamReader(socket.getInputStream()));do {// 从客户端拿到一条数据String str = socketInput.readLine();if ("bye".equalsIgnoreCase(str)) {flag = false;// 回送socketOutPut.println("bye");} else {// 打印到屏幕并回送数据长度System.out.println(str);socketOutPut.println("回送:" + str.length());}} while (flag);socketInput.close();socketOutPut.close();} catch (Exception e) {System.out.println("连接异常断开");} finally {// 连接关闭try {socket.close();} catch (IOException e) {e.printStackTrace();}}System.out.println("客户端关闭" + socket.getInetAddress() + "p" + socket.getPort());}}
}
;import java.io.*;
import java.net.Inet4Address;
import java.net.InetSocketAddress;
import java.net.Socket;/*** @author : itwang* @description:* @date: Created in 22:40 2018/12/29* @package: PACKAGE_NAME* @modified By:*/
public class Client {public static void main(String[] args) throws IOException {// 创建socketSocket socket = new Socket();// 设置超时时间socket.setSoTimeout(3000);socket.connect(new InetSocketAddress(Inet4Address.getLocalHost(), 2000));System.out.println("已经发起服务器连接,并进入后续流程");System.out.println("客户端信息:" + socket.getLocalAddress() + "p:" + socket.getLocalPort());System.out.println("服务端信息:" + socket.getInetAddress() + "P" + socket.getPort());try {todo(socket);} catch (Exception e) {System.out.println("异常关闭");}// 释放资源socket.close();System.out.println("客户端退出");}private static void todo(Socket client) throws IOException {// 构建键盘输入流InputStream in = System.in;BufferedReader input = new BufferedReader(new InputStreamReader(in));// 得到socket输出流,并且转化为打印流OutputStream outputStream = client.getOutputStream();PrintStream socketPrintStream = new PrintStream(outputStream);// 得到socket输入流,并转化为bufferedReaderInputStream inputStream = client.getInputStream();BufferedReader socketBufferedReader = new BufferedReader(new InputStreamReader(inputStream));boolean flag = true;do {// 键盘读取一行String str = input.readLine();// 发送到服务器socketPrintStream.println(str);// 从服务器读取一行String echo = socketBufferedReader.readLine();if ("bye".equalsIgnoreCase(echo)) {flag = false;} else {System.out.println(echo);}} while (flag);// 资源释放socketPrintStream.close();socketBufferedReader.close();}
}

什么是网络编程(一)相关推荐

  1. Linux网络编程--进程间通信(一)

    进程间通信简介(摘自<Linux网络编程>p85) AT&T 在 UNIX System V 中引入了几种新的进程通讯方式,即消息队列( MessageQueues),信号量( s ...

  2. C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口。

    C#_Socket网络编程实现的简单局域网内即时聊天,发送文件,抖动窗口. 最近接触了C#Socket网络编程,试着做了试试(*^__^*) 实现多个客户端和服务端互相发送消息 发送文件 抖动窗口功能 ...

  3. java基于http协议编程_Java中基于HTTP协议网络编程

    java中为我们的网络支持提供了java.net包,能够使我们以编程的方式来访问Web服务功能,这篇博客,就跟大家分享一下,Java中的网络编程的知识,主要是学习下该java.net包下的API. U ...

  4. java 密钥工厂 desede_20145212 实验五《Java网络编程》

    20145212 实验五<Java网络编程> 一.实验内容1.运行下载的TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代 ...

  5. Linux io模型及函数调用,Linux 网络编程的5种IO模型:信号驱动IO模型

    Linux 网络编程的5种IO模型:信号驱动IO模型 背景 这一讲我们来看 信号驱动IO 模型. 介绍 情景引入: 在信号驱动IO模型中,当用户线程发起一个IO请求操作,会给对应的socket注册一个 ...

  6. android 网络编程实现,Android开发使用HttpURLConnection进行网络编程详解【附源码下载】...

    本文实例讲述了Android开发使用HttpURLConnection进行网络编程.分享给大家供大家参考,具体如下: --HttpURLConnection URLConnection已经可以非常方便 ...

  7. Linux网络编程实例分析

    最近由于工作原因需要温习一下Linux网络编程的部分基础知识,因此对之前写的Socket网络通信的代码进行了进一步优化和拓展,在不关闭一次Socket连接的基础上,对服务端加入循环读写的功能,同时加入 ...

  8. C语言网络编程:多路IO select实现多客户端

    文章目录 阻塞式的服务器程序 多线程服务器程序 非阻塞式服务器程序 基于事件响应的服务器程序 事件响应服务器程序的实现`select` 阻塞式的服务器程序 我们接触过最多的最基础的网络通信模型为TCP ...

  9. C语言网络编程:close或者shutdown断开通信连接

    文章目录 前言 close函数介绍 shutdown函数介绍 前言 这里在主要通过实例进行描述close函数在网络编程中的使用 TCP编程模型中客户端或者服务器只要主动通过close发起断开连接的请求 ...

  10. Android网络编程系列 一 Socket抽象层

    在<Android网络编程>系列文章中,前面已经将Java的通信底层大致的描述了,在我们了解了TCP/IP通信族架构及其原理,接下来我们就开始来了解基于tcp/ip协议层的Socket抽象 ...

最新文章

  1. 微众WeCross 跨链平台(2)网络拓扑
  2. 【NLP】EMNLP'21 | 让压缩语言模型自动搜索最优结构!
  3. [java] javax.el.PropertyNotFoundException: Property 'id' not found on type bean.Student
  4. 用turtle画皮卡丘
  5. 使用HTTPS和OAuth 2.0保护服务到服务的Spring微服务
  6. NOIP2007 树网的核
  7. LayaAir UI 组件 # HSlider,VSlider(水平/垂直滑动条)
  8. 免费搭建私人云盘+内网渗透+不限速无限存储
  9. Circumventing Group Policy Settings
  10. JavaScript 【js】回车键替换成逗号,逗号替换成回车键
  11. 2020最新注册卡密微信在线充值购卡功能(适用于各种网络验证开发)【易语言源码】
  12. 爬虫--Scrapy之Downloader Middleware
  13. layui form.js select的扩展插件(转自Author:@贤心)
  14. 单片机轻松入门之三:蜂鸣器,单片机驱动蜂鸣器电路
  15. 寒武纪面试——深度学习工程师
  16. qgjsfagafgpjqip
  17. Smarter TSM 工具集介绍
  18. 【业务】畅捷通T+销售业务分解操作指导
  19. libtorch tensor的使用
  20. SQL Server之SQL Trace选项

热门文章

  1. MongoDB 极简入门实践
  2. 如何在ArcGIS中打开卫星影像
  3. hdu5773The All-purpose Zero
  4. 秋风:教育部办学还是学校办学?
  5. 8.3-写代码必须要写注释吗?(为什么现实中不写注释?)
  6. 边缘计算中任务卸载研究综述
  7. 在一夜暴富之前,我先一夜秃了头
  8. win7升级win10正式版_win7升级win10数据是否会丢失?
  9. 《图形编程技术学习》(三十五)Phong明暗处理
  10. Redis 深度历险: 核心原理和应用实践