1.基本概念

网络:一组相互连接的计算机,多台计算机组成,使用物理线路进行连接

网络连接的功能:交换数据、共享资源

网络编程3要素:

  IP 地址:唯一标识网络上的每一台计算机,两台计算机之间通信的必备有素

  端口号:计算机中应用的标号(代表一个应用程序),0-1024 系统使用或保留端口 ,端号口占 2 个字节,所以有效端口 0-65535

  通信协议:通信的规则 TCP,UDP

IP地址:网络ID+主机ID    共 32 位,4 个 8位二进制数组成

  网络 ID:标识计算机或网络设备所有的网段
  主机 ID:标识特定的主机或网络设备

  

  

  特殊 IP 地址:
  1) 127.0.0.1:本机回环地址,用于本机测试
  2) 255.255.255.255:当前子网,一般用于当前子网广播信息

端口号    相当于现实中的门牌号

虚拟的概念,使用 0-65535 之间的整数,用于标识不同的应用程序,每个网络程序都会至少有一个端口号

Socket 
Socket 称为“套接字”,是计算机之间通信的一种约定或一种方式,通过 Socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。

每一个客户端都使用一个 Socket 对象表示,服务器端使用 ServerSocket 等待客户端的连接

生活案例:

如果你想写封邮件发给远方的朋友,如何写信、将信打包,属于应用层。信怎么写,怎么打包完全由我们做主;

而当我们将信投入邮筒时,邮筒的那个口就是套接字,在进入套接字之后,就是传输层、网络层等(邮局、公路交管

或者航线等)其它层次的工作了。我们从来不会去关心信是如何从西安发往北京的,我们只知道写好了投入邮筒就 OK了

2.网络参考模型

OSI 参考模式:开放系统互连参考模型(Open SystemInterconnect)

TCP/IP 参考模型:传输控制/网际协议 Transfer ControlnProtocol / Internet Protocol

3.TCP 和 UDP 协议的区别

TCP:一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议。

特点
  1) 面向连接
  2) 点到点的通信
  3) 高可靠性:三次握手
  4) 占用系统资源多、效率低

UDP:一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务

特点:
  1) 非面向连接,传输不可靠,可能丢失
  2) 发送不管对方是否准备好,接收方收到也不确认
  3) 数据报的大小限制在 64k 内
  4) 非常简单的协议,开销小

4.TCP 协议数据传递细节

服务器创建 ServerSocket,在指定端口监听并处理请求
客户端创建 Socket,向服务器发送请求

5.UDP 协议数据传递细节

1) 不需要利用 IO 流实现数据的传输,地位相等,既可以是发生方也可以是接收方

2) 每个数据发送单元被统一封装成数据包的方式,发送方将数据包发送到网络中,数据包在网络中去寻找他的目的地。

3) DatagramSocket:用于发送或接收数据包

4) DatagramPacket:数据包

java网络编程基本知识的更多相关文章

  1. Java 网络编程相关知识

    网络的一些基础知识 IP地址分类 IP地址根据网络ID的不同分为5种类型,A类地址.B类地址.C类地址.D类地址和E类地址.A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用 ...

  2. 【Java基础】Java网络编程基础知识

    什么是网络编程 网络编程是通过使用套接字来达到进程间通信目的,那什么是套接字呢?其实套接字是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的 ...

  3. JAVA网络编程基础知识

    网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯.网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输.在TCP/IP协 ...

  4. JAVA 网络编程 - 实现 群聊 程序

    在实现 这个 程序之前, 我们 需要 了解 一些 关于 Java 网络 编程 的 知识. 基本 的 网络知识: 网络模型 OSI (Open System Interconnection 开放系统互连 ...

  5. Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)

    本文转载 https://www.javadoop.com 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https://github.c ...

  6. Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型

    本文转自:http://www.sohu.com/a/203838233_827544 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 ht ...

  7. Java网络编程与NIO详解2:JAVA NIO 一步步构建IO多路复用的请求模型

    本文转载自:https://github.com/jasonGeng88/blog 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 http ...

  8. Java网络编程基础(Netty预备知识)

    今天在家休息,闲来无事,写篇博客,陶冶下情操~~~ =================我是分割线================ 最近在重新学习Java网络编程基础,以便后续进行Netty的学习. 整 ...

  9. Java 网络编程学习总结

    新手一枚,Java学习中,把自己学习网络编程的知识总结一下,梳理下知识,方便日后查阅,高手莫进. 本文的主要内容: [1]    网络编程认识                [2]  TCP/IP编程 ...

随机推荐

  1. #Java学习之路——基础阶段(第十一篇)

    我的学习阶段是跟着CZBK黑马的双源课程,学习目标以及博客是为了审查自己的学习情况,毕竟看一遍,敲一遍,和自己归纳总结一遍有着很大的区别,在此期间我会参杂Java疯狂讲义(第四版)里面的内容. 前言: ...

  2. CAS机制与自旋锁

    CAS(Compare-and-Swap),即比较并替换,java并发包中许多Atomic的类的底层原理都是CAS. 它的功能是判断内存中某个地址的值是否为预期值,如果是就改变成新值,整个过程具有原子 ...

  3. Vue.js-01:第一章 - 一些基础概念

    一.前言 Vue.React.Angular,当今前端界的三驾马车,作为传统的后端程序员,前端再也不是我们想的那种切切图就可以了,第一次接触的话,先了解了解一些基础的概念. 学习系列目录地址:http ...

  4. IdentityServer4 中文文档与实战

    写在前面 写于2018.9.12 我研究 IdentityServer4 是从.net core 1.1的时候开始的,那时候国内的中文资料比较少,我都是按照官方文档来研究的,整理成了笔记.这个系列文档 ...

  5. java~springboot~gradle里的docker集成

    在springboot里,我们的task任务可以添加docker构建的功能,在gradle集成环境里,直接可以实现编译,测试,打包镜像的流水线作业,很是方便! 下面分享给大家,在gradle里添加do ...

  6. word中如何只修改英文的颜色

    替换->更多->使用通配符,查找[a-zA-Z],替换为^&,字体选红色

  7. Mysql、SqlServer、Oracle三大数据库的区别

    一.MySQL 优点: 体积小.速度快.总体拥有成本低,开源: 支持多种操作系统: 是开源数据库,提供的接口支持多种语言连接操作 : MySQL的核心程序采用完全的多线程编程.线程是轻量级的进程,它可 ...

  8. Excel自动换行、Export2Excel 自动换行

    1需求:导出excel后自动换行显示. 2插件:Export2Excel 3.测试 listToExcel() { import('@/vendor/Export2Excel').then(excel ...

  9. PyQtdeploy-V2.4 User Guide 中文 (二)

    PyQtdeploy 用户指南 目录 介绍 与V1.0+的差异 作者 证书 安装 部署过程概览 PyQt的演示 构建演示 Android IOS Linux MacOS Windos 构建系统根目录 ...

  10. 禁用了传说中的PHP危险函数之后,Laravel的定时任务不能执行了?

    虽然已是 2018 年,但网上依然流传着一些「高危 PHP 函数,请一定要禁用!」的标题党文章(搜索关键字:一些需要禁用的PHP危险函数). 这些文章的内容简单直接,给出 php.ini 的 disa ...