网络编程_基础知识笔记

351 阅读5分钟

一、概述

​ Java是Internet上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的 网络应用程序。

​ Java提供的网络类库(java.net),可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机 安装系统里,由JVM进行控制。并且Java实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境

计算机网络

​ 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

网络编程的目的

​ 直接或间接地通过网络协议与其它计算机实现数据交换,进行通讯。

二、网络通信两个要素

  1. 如何准确定位到网络上的一台或者多台主机,以及特定的应用?

    ​ 通过通信双方的地址:IP + 端口号

  2. 找到主机后如何可靠高效地进行数据传输?

    ​ 通过一定的规则进行传输,即网络通信协议,两套参考模型:OSI参考模型、TCP/IP参考模型;

    • OSI参考模型:模型过于理想化,未能在因特网上进行广泛推广(七层)
    • TCP/IP参考模型:TCP/IP协议(传输控制协议TCP和网络互联协议IP),国际标准(五层)

参考模型

三、IP

IP:Internet Protocol(网络互联协议)的缩写,是TCP/IP体系中的网络层协议

  • 网络主机的唯一标识(通信实体)

  • IP地址地址(hostAddress):127.0.0.1、14.215.177.38

  • 域名(hostName):localhost、www.baidu.com

  • IP地址的分类一:IPV4和IPV6

    • IPV4:长度为32位(4个字节),如:192.168.113.124; 数量大概有42亿个,但是30亿在北美而亚洲只有4亿,于2011年初已经用尽。
    • IPV6:长度位128位(16个字节),如:2001:3CA1:010F:001A:121B:0000:0000:0010;
  • IP地址的分类二:公网地址(万维网使用)和私有地址(局域网使用)

    • A类私有IP:10.0.0.0~10.255.255.255
    • B类私有IP:172.16.0.0~172.31.255.255
    • C类私有IP:192.168.0.0 ~192.168.255.255
    • 其他范围的IP均为公有IP地址
  • A、B、C、D、E类IP地址

    • A类:0 + 7位网络号 + 24位主机号,1.0.0.0 ~ 126.0.0.0
    • B类:10 + 14位网络号 + 16位主机号,128.0.0.0 ~ 191.255.0.0
    • C类:110 + 21位网络号 + 8位主机号,192.0.0.0 ~ 223.255.255.0
    • D类:1110 + 28位,多播地址
    • E类:11110 + 27位,保留地址
    • 环回地址:127.0.0.1/localhost/本地地址

域名:为了便于记忆,当连接网络时输入一个主机的域名后,域名服务器DNS负责将域名转化成IP地址,这样才能和主机建立链接。

域名流程

四、端口号

端口号:标识正在计算机上运行的进程(程序)

  • 不同的进程有不同的端口号,用来区分软件
  • 区间范围0~65535,TCP/UDP共有2 * 65535
  • 端口号的分类
    • 公有端口(0 ~ 1023)
      • HTTP:80
      • HTTPS:433
      • FTP:21
      • Telnet:23
    • 程序注册端口(1024 ~ 49151),分配给用户或者程序
      • Tomcat:8080
      • MySQL:3306
      • Redis:6379
    • 动态、私有端口:49152 ~ 65535
netstat -ano #列出所有端口的情况
netstat -ano|findstr "8080" #列出指定端口的情况
tasklist|findstr "8080" #查看指定端口的进程 

五、网络通信协议

协议,经过谈判、协商而制定的共同承认、共同遵守的文件。

网络通信协议,是一种网络通用语言,为连接不同操作系统和不同硬件体系结构的互联网络引提供通信支持,是一种网络通用语言。

TCP/IP协议簇

  • 传输层协议中两个非常重要的协议
    • TCP:用户传输协议(Transmission Control Protocol)
    • UDP:用户数据报协议(User Datagram Protocol)
  • TCP/IP两个主要协议
    • TCP:传输层,传输控制协议
    • IP:网络层,网络互联协议
    • 实际上是一组协议,包括多个具有不同功能且互为关联的协议

TCP和UDP对比

  • TCP协议
    • 使用TCP协议前,必须建立TCP连接,形成传输数据通道
    • 传输前,采用“三次握手”方式,点对点通信,是可靠的
    • TCP协议进行通信的两个应用进程:客户端、服务的
    • 在连接中可以进行大数据量的传输
    • 传输完毕,需要释放已建立的连接,效率低
    • eg:打电话
  • UDP协议
    • 将数据、源、目的封装成数据包,不需要建立连接
    • 每个数据报的大小限制在64K内
    • 发送方不管对方是否准备好,接收方接受数据也不会确认,不可靠
    • 可以广播发送
    • 发送数据结束时,无需释放资源,开销小,速度快
    • eg:发短信

三次握手

这个连接必须是一方主动打开,另一方被动打开的。

三次握手

四次挥手

连接的释放必须是一方主动释放,另一方被动释放。

四次挥手