在学习Java网络编程之前,我们先来了解什么是计算机网络。

计算机网络是指两台或更多的计算机组成的网络,在同一个网络中,任意两台计算机都可以直接通信,因为所有计算机都需要遵循同一种网络协议。

那什么是互联网呢?互联网是网络的网络(internet),即把很多计算机网络连接起来,形成一个全球统一的互联网。

对某个特定的计算机网络来说,它可能使用网络协议ABC,而另一个计算机网络可能使用网络协议XYZ。如果计算机网络各自的通讯协议不统一,就没法把不同的网络连接起来形成互联网。因此,为了把计算机网络接入互联网,就必须使用TCP/IP协议。

TCP/IP协议泛指互联网协议,其中最重要的两个协议是TCP协议和IP协议。只有使用TCP/IP协议的计算机才能够联入互联网,使用其他网络协议(例如NetBIOS、AppleTalk协议等)是无法联入互联网的。

IP地址

在互联网中,一个IP地址用于唯一标识一个网络接口(Network Interface)。一台联入互联网的计算机肯定有一个IP地址,但也可能有多个IP地址。

IP地址分为IPv4和IPv6两种。IPv4采用32位地址,类似101.202.99.12,而IPv6采用128位地址,类似2001:0DA8:100A:0000:0000:1020:F2F3:1428。IPv4地址总共有232个(大约42亿),而IPv6地址则总共有2128个(大约340万亿亿亿亿),IPv4的地址目前已耗尽,而IPv6的地址是根本用不完的。

IP地址又分为公网IP地址和内网IP地址。公网IP地址可以直接被访问,内网IP地址只能在内网访问。内网IP地址类似于:

192.168.x.x

10.x.x.x

有一个特殊的IP地址,称之为本机地址,它总是127.0.0.1。

IPv4地址实际上是一个32位整数。例如:

106717964 = 0x65ca630c

= 65 ca 63 0c

= 101.202.99.12

如果一台计算机只有一个网卡,并且接入了网络,那么,它有一个本机地址127.0.0.1,还有一个IP地址,例如101.202.99.12,可以通过这个IP地址接入网络。

如果一台计算机有两块网卡,那么除了本机地址,它可以有两个IP地址,可以分别接入两个网络。通常连接两个网络的设备是路由器或者交换机,它至少有两个IP地址,分别接入不同的网络,让网络之间连接起来。

如果两台计算机位于同一个网络,那么他们之间可以直接通信,因为他们的IP地址前段是相同的,也就是网络号是相同的。网络号是IP地址通过子网掩码过滤后得到的。例如:

某台计算机的IP是101.202.99.2,子网掩码是255.255.255.0,那么计算该计算机的网络号是:

IP = 101.202.99.2

Mask = 255.255.255.0

Network = IP & Mask = 101.202.99.0

每台计算机都需要正确配置IP地址和子网掩码,根据这两个就可以计算网络号,如果两台计算机计算出的网络号相同,说明两台计算机在同一个网络,可以直接通信。如果两台计算机计算出的网络号不同,那么两台计算机不在同一个网络,不能直接通信,它们之间必须通过路由器或者交换机这样的网络设备间接通信,我们把这种设备称为网关。

网关的作用就是连接多个网络,负责把来自一个网络的数据包发到另一个网络,这个过程叫路由。

所以,一台计算机的一个网卡会有3个关键配置:

IP地址,例如:10.0.2.15

子网掩码,例如:255.255.255.0

网关的IP地址,例如:10.0.2.2

域名

因为直接记忆IP地址非常困难,所以我们通常使用域名访问某个特定的服务。域名解析服务器DNS负责把域名翻译成对应的IP,客户端再根据IP地址访问服务器。

用nslookup可以查看域名对应的IP地址:

$ nslookup www.liaoxuefeng.com

Server: xxx.xxx.xxx.xxx

Address: xxx.xxx.xxx.xxx#53

Non-authoritative answer:

Name: www.liaoxuefeng.com

Address: 47.98.33.223

有一个特殊的本机域名localhost,它对应的IP地址总是本机地址127.0.0.1。

网络模型

由于计算机网络从底层的传输到高层的软件设计十分复杂,要合理地设计计算机网络模型,必须采用分层模型,每一层负责处理自己的操作。OSI(Open System Interconnect)网络模型是ISO组织定义的一个计算机互联的标准模型,注意它只是一个定义,目的是为了简化网络各层的操作,提供标准接口便于实现和维护。这个模型从上到下依次是:

应用层,提供应用程序之间的通信;

表示层:处理数据格式,加解密等等;

会话层:负责建立和维护会话;

传输层:负责提供端到端的可靠传输;

网络层:负责根据目标地址选择路由来传输数据;

链路层和物理层负责把数据进行分片并且真正通过物理网络传输,例如,无线网、光纤等。

互联网实际使用的TCP/IP模型并不是对应到OSI的7层模型,而是大致对应OSI的5层模型:

OSI

TCP/IP

应用层

应用层

表示层

会话层

传输层

传输层

网络层

IP层

链路层

网络接口层

物理层

常用协议

IP协议是一个分组交换,它不保证可靠传输。而TCP协议是传输控制协议,它是面向连接的协议,支持可靠传输和双向通信。TCP协议是建立在IP协议之上的,简单地说,IP协议只负责发数据包,不保证顺序和正确性,而TCP协议负责控制数据包传输,它在传输数据之前需要先建立连接,建立连接后才能传输数据,传输完后还需要断开连接。TCP协议之所以能保证数据的可靠传输,是通过接收确认、超时重传这些机制实现的。并且,TCP协议允许双向通信,即通信双方可以同时发送和接收数据。

TCP协议也是应用最广泛的协议,许多高级协议都是建立在TCP协议之上的,例如HTTP、SMTP等。

UDP协议(User Datagram Protocol)是一种数据报文协议,它是无连接协议,不保证可靠传输。因为UDP协议在通信前不需要建立连接,因此它的传输效率比TCP高,而且UDP协议比TCP协议要简单得多。

选择UDP协议时,传输的数据通常是能容忍丢失的,例如,一些语音视频通信的应用会选择UDP协议。

小结

计算机网络的基本概念主要有:

计算机网络:由两台或更多计算机组成的网络;

互联网:连接网络的网络;

IP地址:计算机的网络接口(通常是网卡)在网络中的唯一标识;

网关:负责连接多个网络,并在多个网络之间转发数据的计算机,通常是路由器或交换机;

网络协议:互联网使用TCP/IP协议,它泛指互联网协议簇;

IP协议:一种分组交换传输协议;

TCP协议:一种面向连接,可靠传输的协议;

UDP协议:一种无连接,不可靠传输的协议。

网络编程java_网络编程基础相关推荐

  1. 网络营销java_网络营销之博客营销

    博客和博客营销 本问节选自<网络营销--网络营销实战密码:策略.技巧.案例>一书 要了解什么是博客营销,首先就要知道什么是博客. 简单地说,博客就是日记形式的网站.博客最初的名称是webl ...

  2. 迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等

    文章目录 网络编程概述 网络通信要素 要素一IP和端口号 要素二网络协议 TCP网络编程 UDP网络编程 URL网络编程 Java网络编程基础 网络编程概述 Java是Internet上的语言,它从语 ...

  3. 基于c++和asio的网络编程框架asio2教程基础篇:1、基本概念和使用说明

    基于c++和asio的网络编程框架asio2教程基础篇:1.基本概念和使用说明 由于asio2没有写技术文档,因此打算写几篇文章介绍一下如何使用它,主要是针对新手. 1.asio2如何使用? asio ...

  4. 基于c++和asio的网络编程框架asio2教程基础篇:2、各个回调函数的触发顺序和执行流程

    基于c++和asio的网络编程框架asio2教程基础篇:2.各个回调函数的触发顺序和执行流程 以tcp举例: tcp服务端流程: #include <asio2/asio2.hpp>int ...

  5. 网络编程_1(网络基础+跨主机传输)

    一.网络基础 知识点回顾: 同一主机间的进程通讯方式: 1.无名管道(亲缘关系间的通讯,固定的读端和写端) 2.有名管道(半双工(因为文件可见,可再次打开交换读端写端),非亲缘关系) 3.信号 4.共 ...

  6. web编程之网络基础

    web编程之网络基础 一.TCP.IP网络: TCP/IP是"Transmission Control Protocol/Internet Protocol"的简写,翻译成中文为传 ...

  7. 【Linux】网络基础+UDP网络套接字编程

    只做自己喜欢做的事情,不被社会和时代裹挟着前进,是一件很奢侈的事. 文章目录 一. 网络基础 1.局域网和广域网 2.协议初识和网络协议分层(TCP/IP四层模型) 3.MAC地址和IP地址(子网掩码 ...

  8. Linux网络编程之网络基础

    目录 一.网络通信概述 二.网络通信基础知识 1.网络通信的发展历程 2.三大网络 3.网络通信的传输媒介 4.网卡 5.集线器(HUB) 6.交换机 7.路由器 8.DNS(Domain Name ...

  9. 网络编程简单入门,基础知识需先掌握

    文章目录 网络编程入门 网络编程概述 网络编程三要素 ==IP地址== IP地址分类 通过控制台,获取IP的方法 InetAddress 三个常用方法 ==端口== 端口号 ==协议== UDP协议 ...

最新文章

  1. 如何只在IE上加载CSS样式表
  2. 在小程序开发路上踩过的小坑
  3. 萤石的云存储到期怎么启动内存卡_3款萤石智能入户单品 让普通入户门秒变智能...
  4. Delphi常用关键字用法详解
  5. [js] document.domain的作用是什么?它有什么限制?
  6. 区别对待 【找到问题发生的原因】 以及   【关于这个问题的 「正确可行」 的解决方法】
  7. opencv保存图像自动命名
  8. Task5.NB_SVM_LDA
  9. 由于应用程序配置不正确,未能启动此应用程序
  10. 关闭445端口等危险端口,应对勒索病毒
  11. 多省市房屋交易平台引入电子签章推动住房交易合同网签备案
  12. 手把手学会gitbub(4)
  13. 计算机桌面的图标都可以删除吗,桌面上图标删除不了怎么回事,电脑桌面的图标删除不了...
  14. eclipse/Myeclipse注释模板修改
  15. 福昕阅读器自定义快捷键
  16. 安装出错:Command line option syntax error.Type Command /? for help.解决方案
  17. elementPlus el-dialog 自适应
  18. 看到一个 cool sign
  19. 函数的参数(形参与实参)的理解
  20. 办公室局域网打印机配置笔记及0x0000011b连接错误成功解决方法

热门文章

  1. 收藏!这 50 道操作系统面试题,真牛!
  2. C++学习日记3——友元、运算重载符、继承、多态
  3. PHP实现RSA与RSA256加密,解密,加签,验签
  4. 在Viz 3.x中如何导入Viz 2.8的打包文件.eva
  5. CocosCreator无尽循环列表,长列表优化drawcall,scrollview列表优化
  6. 内网连接外网会怎么样
  7. 【网络编程】利用Nginx实现动静分离--分离动态请求和静态请求(Nginx+Tomcat)
  8. grasshopper butterfly插件报错
  9. 基于emWin的WAV,MP3软解软件播放器,带类似千千静听频谱,含uCOS-III和FreeRTOS两个版本...
  10. MPLAB X IDE v5.30离线安装MCC方法