参考阅读[中国互联网发展史]:https://zhuanlan.zhihu.com/p/61602252

协议

计算机网络中的通信必须有一些约定,这些约定称为“通信协议”。

通信协议规定了传输速率、传输代码、代码结构、传输控制步骤、出错控制等处理的标准。

通信协议中有两个重要的协议,IP协议和TCP协议。

IP协议:Internet Protocol,互联网协议,又称网际协议。

TCP协议:Transmission Control Protocol,传输控制协议。

这两个协议是互补的,实际使用中常统称为“TCP/IP协议”

TCP/IP协议最早出现在Unix操作系统中,现在各操作系统都支持,是Internet中最常用的基础协议。

国际标准化组织(ISO)在1978年提出了“开放系统互连”参考模型(OSI),用于制定计算机网络模型的标准。

然而,OSI只是一个参考标准,事实上的标准是TCP/IP模型。

ISO:International Organization for Standardization,国际标准化组织

OSI:Open System Interconnection,开放系统互联

TCP/IP 的体系结构:

协议
应用层 各种应用层协议:HTTP, FTP, SMTP, DNS 等
运输层 TCP: 传输控制协议(Transmission Control Protocol)
UDP: 用户数据报协议(User Datagram Protocol)
网际层 IP: 网际协议
网络接口层

TCP与UDP:

TCP协议简介

TCP协议是面向连接的通信协议

传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。

TCP协议通过三次握手建立连接,四次挥手断开连接。

主要说明三次握手:

|--第一次握手,客户端向服务器端发出连接请求,等待服务器确认。

|--第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求。

|--第三次握手,客户端再次向服务器端发送确认信息,确认连接。

|--确认连接后,客户端和服务器开始进行数据传输。

由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛,例如下载文件、浏览网页等。

↑三次握手四次挥手

UDP协议简介

UDP协议是不面向连接的协议

传输数据时,不需要建立连接,不管对方端服务是否启动,直接将数据、数据源和目的地都封装在数据包中,直接发送。

因为无连接,所以传输速度快,但是容易丢失数据,因此UDP是不可靠的协议。日常应用中,例如视频会议、QQ聊天等。

TCP与UDP的区别:

1.TCP面向连接;UDP不面向连接;

2.TCP效率较低,占用系统资源较高,确认机制,重传机制、拥塞控制机制等会消耗大量时间;UDP没有这些机制,效率较高。

3.TCP是流模式,UDP是数据报模式 ;

4.TCP保证数据正确性,UDP可能丢包;

5.TCP保证数据顺序,UDP不保证。

TCP/UDP笑话其一:

一个TCP程序包走进一家酒吧:我要一杯啤酒。

酒保:你要一杯啤酒?

程序包:是的,我要一杯啤酒。

TCP/UDP笑话其二:

A:你能给我解释一下什么是TCP么?

B:我开始解释了:你想听我解释一下TCP么?

A:嗯,我TCP。

B:好的,我会给你讲一个TCP的笑话。

A:好的,我会听你讲一个TCP的笑话。

B:你准备好听一个TCP的笑话么?

A:嗯,我准备好听一个TCP的笑话

B:Ok,那我要发TCP笑话了。大概有10秒,20个字。

嗯,我准备收你那个10秒时长,20个字的笑话了。

抱歉,你的连接超时了。你好,你想听TCP的笑话么。

B:过瘾不,没过瘾再来一个

TCP/UDP笑话其三:

"Let me tell you a UDP joke, but you might not get it."

网络数据传输:

IP地址

IP地址(Internet Protocol Address)

网络中有多台计算机,它们必须通过某种标识来区分每一台机器,这中标识就是IP地址。

如果把计算机比作电话,IP地址就相当于电话号码。

IP地址(IPv4)由4个字节共32位二进制数组成,类似于:192.168.0.8;

在网络寻找某一台计算机都是依靠它的IP地址(用域名或计算机名定位主机其实也是转成IP地址后再找到该主机的);

|-网络ID:网络ID标识了计算机所在的网段;

|-主机ID:主机ID标识了特定的主机

IPv4有大约42亿个。

IPv6采用128位地址长度,每16个字节一组,分成8组十六进制数,号称可以为全世界的每一粒沙子编上一个地址。

参考阅读【计算机网络的基本概念】:https://zhuanlan.zhihu.com/p/61605812

端口号

一台计算机中往往运行着多个网络程序,IP地址只能确保把数据送到指定的计算机,但不能保证把这些数据传递给哪个网络程序。此时需要使用端口号加以区分。

【 协议+IP地址+端口号】

端口号用于表示把数据交给哪个网络程序处理,是一个16位的整数,范围0~65535。1024以下的端口号保留给预定义的服务,如:

|--21:FTP文件传输协议

|--23:Telnet 不安全的文本传送

|--25:SMTP(E-mail)

|--80:HTTP 超文本传送协议 (WWW)

|--110:POP3(E-mail)

开发时一般使用1024以上的端口号。

 [查看端口被占用]:https://www.cnblogs.com/tigerlion/p/10664308.html


InetAddress类

java.net.InetAddress类代表IP地址。

import java.net.*;
public class _InetAddressDemo {
public static void main(String[] args) throws UnknownHostException {
主机IP();
根据主机名获取IP();
域名解析();
} static void 主机IP() throws UnknownHostException {
// 获得当前本地主机的IP地址
System.out.println("=====InetAddress.getLocalHost()=====");
InetAddress add1 = InetAddress.getLocalHost();
System.out.println("当前主机【toString()】" + add1.toString());
System.out.println("当前主机【getHostName()】" + add1.getHostName());
System.out.println("当前主机【getHostAddress()】" + add1.getHostAddress());
} static void 根据主机名获取IP() throws UnknownHostException {
System.out.println("=====InetAddress.getByName(IP地址)=====");
String hostName = "hsdjk";
// 获取主机的 IP 地址
InetAddress add3 = InetAddress.getByName(hostName);
System.out.println(hostName + "的IP是:" + add3);
// 获取其 IP 地址所组成的数组
InetAddress[] add4 = InetAddress.getAllByName(hostName);
for (InetAddress ad : add4) {
System.out.println(hostName + "->【】" + ad);
}
} static void 域名解析() throws UnknownHostException {
System.out.println("=====InetAddress.getAllByName(DNS域名解析)=====");
String domainName = "www.baidu.com";
InetAddress[] add2 = InetAddress.getAllByName(domainName);
for (InetAddress ad : add2) {
System.out.println(domainName + "的IP是:" + ad);
}
}
}

Java基础教程——网络基础知识的更多相关文章

  1. Java Socket通讯---网络基础

    java socket 通讯 参考慕课网:http://www.imooc.com/learn/161 一.网络基础知识 1.1 通讯示意图 1.2 TCP/IP协议 TCP/IP是世界上应用最为广泛 ...

  2. Java Socket编程----网络基础

    详见:https://www.cnblogs.com/rocomp/p/4790340.html Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而 ...

  3. Python 基础教程 —— 网络爬虫入门篇

    前言 Python 是一种解释型.面向对象.动态数据类型的高级程序设计语言,它由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年.自面世以后,Pytho ...

  4. 网络编程基础:网络基础之网络协议、socket模块

    操作系统(简称OS)基础: 应用软件不能直接操作硬件,能直接操作硬件的只有操作系统:所以,应用软件可以通过操作系统来间接操作硬件 网络基础之网络协议: 网络通讯原理: 连接两台计算机之间的Intern ...

  5. php基础教程-必备基础知识

    PHP 脚本在服务器上执行. 您应当具备的基础知识 在继续学习之前,您需要对下面的知识有基本的了解: HTML CSS JavaScript 如果您希望首先学习这些项目,请在我们的 首页 访问这些教程 ...

  6. Java中的网络基础

    先来一张图记录一下大概思路,之后再更新具体的代码实现.基本上来说,前半部分自己会编写一个基于socket编程的多客户端dos聊天服务器,后半部分可以实现与已有的一些服务器(比如www.google.c ...

  7. linux基础之网络基础配置

    基础命令:ifconfig/route/netstat,ip/ss,nmcli 一.ifconfig/route/netstat相关命令 1.  ifconfig - configure a netw ...

  8. python基础之网络基础

    一.操作系统基础 操作系统:(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才 ...

  9. Python笔记_第五篇_Python数据分析基础教程_NumPy基础

    1. NumPy的基础使用涵盖如下内容: 数据类型 数组类型 类型转换 创建数组 数组索引 数组切片 改变维度 2. NumPy数组对象: NumPy中的ndarray是一个多维数组对象,该兑现共有两 ...

随机推荐

  1. vue 404

    问题描述:前端同事使用Vue.js框架,利用vue-route结合webpack编写了一个单页路由项目,运维协助在服务器端配置nginx.部署完成后,访问首页没问题,从首页里打开二级页面没问题,但是所 ...

  2. 云计算管理平台之OpenStack镜像服务glance

    一.glance简介 openstack中的glance服务是用来存储在openstack上启动虚拟机所需镜像:它主要用于发现.注册及检索虚拟机镜像:它通过提供RESTful风格的api对外提供服务: ...

  3. Linux系统搭建Hadoop集群

    一.环境说明 IP地址 主机名 备注 操作系统 192.168.92.11 hserver1 namenode Ubuntu 16.04 192.168.92.12 hserver2 datanode ...

  4. js &&与||的妙用

    &&表达式中,若前一个为false则不会执行下去,||表达式中,一直寻找到true即停止 例:成长速度为5显示1个箭头,为10显示2个箭头,为 15显示3个箭头,其余显示0个箭头var ...

  5. 6 MyISAM和InnoDB

    6 MyISAM和InnoDB MyISAM 适合于一些需要大量查询的应用,但其对于有大量写操作并不是很好.甚至你只是需要update一个字段,整个表都会被锁起来,而别的进程,就算是读进程都无法操作直 ...

  6. Java多线程经典题目(医院挂号)

    题目 实现一个医院的挂号机系统,要求:有多台挂号机同时运行,此时无论有多少患者挂号,要求都能挂到不同 的号码,并且要求实现当意外断电之后,下一次恢复还能从上次结束号码继续挂号? * synchroni ...

  7. [MIT6.006] 7. Counting Sort, Radix Sort, Lower Bounds for Sorting 基数排序,基数排序,排序下界

    在前6节课讲的排序方法(冒泡排序,归并排序,选择排序,插入排序,快速排序,堆排序,二分搜索树排序和AVL排序)都是属于对比模型(Comparison Model).对比模型的特点如下: 所有输入ite ...

  8. 基于CPU版本的Caffe推理框架

    最近一段时间,认真研究了一下caffe.但是,里面内容过多,集合了CPU版本和GPU版本的代码,导致阅读起来有些复杂.因此,特意对caffe代码进行了重构,搭建一个基于CPU版本的Caffe推理框架. ...

  9. prometheus监控golang服务实践

    一.prometheus基本原理介绍 prometheus是基于metric采样的监控,可以自定义监控指标,如:服务每秒请求数.请求失败数.请求执行时间等,每经过一个时间间隔,数据都会从运行的服务中流 ...

  10. 搭建vue-cli4.0项目

      ① Vue CLI的包名称由 vue-cli 改成了 @vue/cli. 如果已经全局安装了旧版本的 vue-cli(1.x或2.x), 你需要先通过 npm uninstall vue-cli ...