参考阅读[中国互联网发展史]: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组十六进制数,号称可以为全世界的每一粒沙子编上一个地址。

端口号

一台计算机中往往运行着多个网络程序,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教学_Java基础教程——网络基础知识相关推荐

  1. 视频教程-快速入门Python基础教程_Python基础进阶视频-Python

    快速入门Python基础教程_Python基础进阶视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥199.00 立 ...

  2. python基础教程博客_Python基础教程_Python入门知识

    Python基础教程频道为编程初学者提供入门前的所有基础知识,必须要掌握的一些PYTHON基础语法语句,基本的数据类型. 让大家可以更快速.更容易理解的的方式掌握Python编程所需要的基础知识,灵活 ...

  3. Axure RP 9 基础教程 元件基础1

    Axure RP 9 for Mac是一款非常专业的交互原型设计软件,它能让用户快速创建应用软件或Web网站的线框图.流程图.原型和规格说明文档.今天小编给大家带来的是Axure RP 9 基础教程 ...

  4. 视频教程-快速入门Python基础教程_Python基础知识大全-Python

    快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...

  5. After Effects CC 2019 Essential Training: The Basics After Effects CC 2019基础教程:基础知识 Lynda课程中文字幕

    After Effects CC 2019 Essential Training: The Basics 中文字幕 After Effects CC 2019基础教程:基础知识 中文字幕After E ...

  6. Adobe Dimension Essential Training: The Basics Adobe Dimension 基础教程:基础知识 Lynda课程中文字幕

    Adobe Dimension Essential Training: The Basics 中文字幕 Adobe Dimension 基础教程:基础知识 中文字幕Adobe Dimension Es ...

  7. java 基础教程 ppt_java基础教程课件.ppt

    java基础教程课件 第三章 运算符,表达式和语句 3.1运算符与表达式 3.2 语句的概述 3.3 控制语句 3.4循环语句 3.5break 和continue语句 3.1运算符与表达式 3.1. ...

  8. python基础教程pdf-python基础教程第三版.pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython python基础教程第三版.pdf689页 本文档 ...

  9. 什么是python基础教程-python基础教程之python是什么?概念解析

    Python,是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CP ...

最新文章

  1. 01H5-fe-html5-003智能表单下
  2. 第二章 Matlab变量
  3. php 照片变成卡通照片,Photoshop实例:变照片为卡通漫画
  4. 概率论-3.2 边际分布与随机变量的独立性
  5. keil之编辑环境配置
  6. yaml报错TypeError: load() missing 1 required positional argument: ‘Loader‘
  7. python 关闭 定时开启_Python爬虫邮箱定时自动发送
  8. C项目案例实践(0)-语言基础
  9. ansible 使用主机IP批量修改机器名
  10. 01-操作数组的方法
  11. Item 1:Always Use Properties Instead of Accessible Date Members
  12. vue表单中批量导入功能_Vue 编辑 新建表单复用的一些思考
  13. 编程小工具总结(一) 取色器
  14. 信号与系统分析中的复变函数
  15. JavaScript系列之注释
  16. 龙格-库塔(Runge-Kutta)方法C++实现
  17. 批量打印html文档,vue项目中使用Lodop实现批量打印html页面和pdf文件
  18. shiny教程一 -- shiny入门
  19. 互联网人用什么软件画出大神级别的架构图?如何画出顶级架构图?
  20. LaTeX - 如何在图片说明(caption)中使用脚注(footnote)

热门文章

  1. 03-sketch基本工具使用
  2. 红酒数据探索(Python内置对象)
  3. oracle 认证考试信息 ocp
  4. 【电源专题】线性稳压器(LDO)简介
  5. 大数据公司挖掘数据价值的49个典型案例
  6. windowsxp最新版本_雨林木风U盘装系统启动盘制作工具更新最新版9.0
  7. 优秀课程案例:使用Scratch的画笔积木模块绘制模拟内摆线!
  8. mysql 报错“发生系统错误 3.系统找不到指定路径”
  9. 约瑟夫环问题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。...
  10. 2021国防科技大学计算机学院无军籍考研409分经验贴(数一+英一+834)