网络编程

地球村概念

概述

计算机网络

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

网络编程的目的

网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组装包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。

想要达到此效果的做法

  1. 准确的定位网络上的主机
  2. 传输数据

网络通信的要素

通信双方的地址:

  • ip
  • 端口号

规则:网络通信的协议

TCP/IP参考模型

主要:传输层:TCP、UDP

小结:

  1. 网络编程的两个主要问题

    • 准确定位到网络上的主机
    • 找到主机之后如何建立通信
  2. 网络编程的要素
    • ip和端口号
    • 网络通信协议
  3. 万物皆对象

IP

ip地址:InetAddress

  • 唯一定位一台网络计算机

  • 本地localhost

  • IP地址分类

    • ipv4/ipv6

      • IPV4:192.168.31.198 4个字节组成
      • IPV6:fe80::b45e:357b:db83:fdec%11 128位,8个无符号整数
    • 公网(互联网)-私网(局域网)

      • ABCD类

        • A类网络的IP地址范围为:1.0.0.1-126.255.255.254;

          B类网络的IP地址范围为:128.1.0.1-191.255.255.254;

          C类网络的IP地址范围为:192.0.1.1-223.255.255.254

          C类之外D类

      • 192.168.31.198 局域网,专门给组织内部使用

  • 域名:记忆IP问题

    • IP
public class TestInetAddress {public static void main(String[] args) throws UnknownHostException {//查询网站IP的地址InetAddress inetAddress = InetAddress.getByName("www.baidu.com");System.out.println(inetAddress);//查询本机的IP地址InetAddress localHost = InetAddress.getLocalHost();System.out.println(localHost);//常用方法System.out.println(inetAddress.getAddress());System.out.println(inetAddress.getCanonicalHostName());//规范的名字System.out.println(inetAddress.getHostName());//域名,或者自己电脑的名字System.out.println(inetAddress.getHostAddress());//IP}
}

端口

端口表示计算机上一个程序的进程

  • 不同的进程有不同的端口号,用以区分软件

  • 被规定0~65535

  • TCP/UDP:单个协议下,端口号不能冲突

  • 端口分类

    • 公有端口 0~1023

      • HTTP:80
      • HTTPS:443
      • FTP:21
      • Telent:23
    • 程序注册端口:1024~49151,分配用户或者程序
      • Tomcat:8080
      • MySQL:3306
      • Oracle:1521
    • 动态/私有端口:49152~65535
    netstat -ano#查看所有的端口
    netstat -ano|findstr "端口号"#查看指定的端口号
    tasklist|findstr "端口号"#查看指定端口的进程
    
//socketaddress:套接字地址
public class TsetInetSocketAddress {public static void main(String[] args) {InetSocketAddress inetSocketAddress = new InetSocketAddress("localhost", 8080);System.out.println(inetSocketAddress);System.out.println(inetSocketAddress.getAddress());//IPSystem.out.println(inetSocketAddress.getHostName());//域名System.out.println(inetSocketAddress.getPort());//端口号}
}

如果需要将一台电脑的程序和另一台电脑的程序建立连接则:

  1. 先获取到目标电脑的ip地址(找到这台电脑)
  2. 获取到目标电脑上面目标程序的端口号(找到这个程序)
  3. 建立连接

通信协议

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

TCP/IP协议

  • TCP:用户传输协议
  • UDP:用户数据报协议
  • IP:网络互联协议

TCP/IP四层概念模型:应用层、传输层、网络层、数据链路层

TCP、UDP对比

TCP:

  • 连接,稳定
  • 三次握手 四次挥手
三次握手:最少需要三次以保证稳定连接
A:连吗?
B:连
A:那我连上了四次挥手:二次确认
A:我要断开了。
B:好的我知道了。
B:你断开了吗?
A:嗯我断开了
  • 客户端、服务端
  • 传输完成—>释放连接(效率低)

UDP:

  • 不连接、不稳定
  • 客户端、服务端:无明确的界限
  • 不管有没有准备好,都可以进行传输
  • eg:导弹

TCP

需要三次以保证稳定连接
A:连吗?
B:连
A:那我连上了

四次挥手:二次确认
A:我要断开了。
B:好的我知道了。
B:你断开了吗?
A:嗯我断开了


- 客户端、服务端
- 传输完成—>释放连接(效率低)UDP:- 不连接、不稳定
- 客户端、服务端:无明确的界限
- 不管有没有准备好,都可以进行传输
- eg:导弹

Java自学笔记之网络编程相关推荐

  1. 【Java学习笔记】 网络编程04 优化字符串拼接:JSON

    学习时间 0731 优化拼接字符串 String : 是复合类型 ,相当于char的数组 是final类,也就是不支持继承 public final class String {private fin ...

  2. JAVA自学笔记,网络程序设计基础

    网络程序设计是值编写与其他计算机进行通信的程序,Java已经将网络程序所需要的东西封装成不同的类.只要创建这些类的对象,使用相应的方法,即使设计人员不具备有关的网络知识,也可以编写出高质量的网络通信程 ...

  3. 黑马程序员_java自学学习笔记(八)----网络编程

    黑马程序员_java自学学习笔记(八)----网络编程 android培训. java培训.期待与您交流! 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无 ...

  4. 【java笔记】网络编程概述

    [java笔记]TCP通信程序_m0_52043808的博客-CSDN博客 [java笔记]网络编程:文件上传案例_m0_52043808的博客-CSDN博客 网络编程: 在一定协议下,实现两台计算机 ...

  5. 《亿级流量JAVA高并发与网络编程实战》笔记--------更新中

    <亿级流量JAVA高并发与网络编程实战>笔记 第一章 高并发概述 "高并发技术" 是一个广义的概念,是指一种高效的地实现并发需求的解决方案,是技术领域的名称,可以包含架 ...

  6. JAVA自学笔记22

    JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...

  7. Java自学笔记——Java面向对象——04.抽象类、接口、内部类

    Java 面向对象各节 Java自学笔记--Java面向对象--01.回顾方法 Java自学笔记--Java面向对象--02.构造器.类和对象 Java自学笔记--Java面向对象--03.封装.继承 ...

  8. 廖雪峰Java自学笔记------Java简洁

    廖雪峰Java自学笔记------Java简洁 这是专门针对小白的零基础Java教程. 为什么要学Java? 因为Java是全球排名第一的编程语言,Java工程师也是市场需求最大的软件工程师,选择Ja ...

  9. Java自学笔记总结04

    Java自学笔记04 一.Lambda表达式 1.1 函数式编程思想概述 1.2 体验Lambda表达式 1.3 Lambda表达式的标准格式 1.4 Lambda表达式的使用 1.5 Lambda表 ...

最新文章

  1. 多条件组合查询+分页
  2. 【全文搜索引擎】Elasticsearch之分词器
  3. 浅谈巴拿马电源的谐波消除原理
  4. ESP8266的一个小问题
  5. CLR via C# 阅读 笔记
  6. youcans 的 OpenCV 学习课—2.图像读取与显示
  7. 学习测试环境部署,先从学会虚拟机安装系统开始
  8. Python中如何获取类属性的列表
  9. 控制Arduino的利器-Windows Remote Arduino
  10. 《通信软件开发与应用》课程结业报告
  11. Brave与Uphold合作推出钱包以奖励用户浏览
  12. Entry name ‘res/layout/test_toolbar.xml‘ collided
  13. 教师基本功训练计算机,教师教学基本功培训方案
  14. 第二课 程小奔之辨别颜色
  15. 华科_图形学笔记_05_初探造型技术_02
  16. vim插件之pathogen,NERDTree,Command-T,Powerline
  17. subscription-manager repos --enable <repo>
  18. php 促销方案,七步就轻松搞定,促销活动方案
  19. [计算机网络] CSMA/CD 协议限定数据帧最小长度为 64B 不变,根据给定的数据传输速率计算得到争用期长度
  20. android裁剪图片功能,实战:七步教你Android图片拍摄及剪裁

热门文章

  1. AR502H-CN开发笔记67:将U盘格式化为FAT32格式
  2. 小而全的Pandas数据分析案例
  3. FreeRTOS CortexM3 M4中断优先级设置总结
  4. pytoch 使用float64训练
  5. 国家电网计算机考试分值,2019国家电网考试考什么题型?分值多少?范围是什么?...
  6. 固高科技在创业板提交注册:业绩开始下滑,实控人均为“学院派”
  7. 2017年谷歌做了哪些好设计?
  8. 乐视体育TV版首发当贝市场 适配多数互联网电视及盒子
  9. 网络虚拟化技术(一): Linux网络虚拟化
  10. IX. Spring Boot应用