Java学习day24
今天学习了IP地址、端口以及TCP/UDP通信协议
网络连接与过去的信件类似,需要知道对方的地址才能寄出去,在计算机网络中,我们的地址就是IP以及端口号
IP能用来唯一定位一台联网的计算机
本机的IP地址:127.0.0.1
IP地址有为IPv4和IPv6两种规格
IPv4:网际协议版本4,地址长度32位,4字节,大概有43亿左右,但是中国仅有4亿多,在2019年11月26日,全球所有的ipv4地址已经全部被占用
IPv6:互联网协议第6版,地址长度128位,16字节,地址数量号称可以为全世界的每一粒沙子编上一个地址
端口表示计算机上的一个程序的进程,不同进程有不同的端口号,用来区分软件;端口号被规定在0-65535;TCP/UDP端口的端口号也不同,即TCP协议下使用了8080端口号,UDP协议下还能使用8080端口号,但是同一种协议下,端口不能重复。
OIS七层模型图:

实际应用时并不会如此细分,而是使用TCP/IP四层模型:

TCP协议可以类比于我们日常打电话,连接比较稳定,有明显的客户端和服务端的区别,效率比较低,建立连接需要三次握手,断开连接需要四次挥手
三次握手:客户端首先向服务端发送连接请求,告知服务端,客户端要进行连接了;服务端再向客户端发送消息,表明收到了请求,你可以连接了;客户端再发送消息,表明我正式接入
四次挥手:客户端和服务端都可以发起中断连接请求,假设是客户端发起的;首先客户端要发送一条消息“客户端数据发送完全”;服务端要回应客户端的消息,告知对方我收到你消息了,并让客户端等待,检查服务端数据是否发送完全;服务端检查完全后给客户端发送消息“服务端数据发送完全,你可以断开了”;客户端回复“收到,我要关闭了”,服务端就可以中断连接了;客户端没有收到服务端回复也就关闭连接了
UDP协议类比于日常发送短信,只要知道对方的地址直接给对方发送就可以,对方会不会回复并不需要管
利用TCP协议实现消息传输:


明天学习UDP数据发送实现以及URL下载网络资源
Java学习day24的更多相关文章
- 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁
什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- 分享篇——我的Java学习路线
虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...
- Java学习笔记(04)
Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...
- Java学习心得之 HttpClient的GET和POST请求
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...
- 0032 Java学习笔记-类加载机制-初步
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
随机推荐
- Java数组经典例题
数组中元素的求和 public class T02 { public static void main(String[] args) { int[][]arr=new int[][]{{1,2,3,4 ...
- Python:range、np.arange和np.linspace
1. range range是python内置的一个类,该类型表示一个不可改变(immutable)的数字序列,常常用于在for循环中迭代一组特殊的数,它的原型可以近似表示如下: class rang ...
- TLS 1.0 至 1.3 握手流程详解
概述 TLS 全称为 Transport Layer Security(传输层安全),其前身是 SSL,全称为 Secure Sockets Layer(安全套接字层),它的作用是为上层的应用协议提供 ...
- 一个".java"源文件中是否可以包含多个类(不是内部类)?有什么限制?
可以,但一个源文件中最多只能有一个公开类(public class)而且文件名必须和公开类的类名完全保持一致.
- java常用方法集合
1.获取当前日期 // 获取当前日期 public Date getDate(int num) { Calendar cal = new GregorianCalendar(); cal.setTim ...
- 为什么WAIT必须在同步块中
我们知道java的Object有wait和notify方法,如果要使用wait和notify的话,那么必须在synchronized块中,否则会抛出IllegalMonitorStateExcepti ...
- 什么是 spring 装配?
当 bean 在 Spring 容器中组合在一起时,它被称为装配或 bean 装配.Spring 容器需要知道需要什么 bean 以及容器应该如何使用依赖注入来将 bean 绑定 在一起,同时装配 b ...
- 哪些是重要的 bean 生命周期方法?你能重载它们吗?
有两个重要的 bean 生命周期方法,第一个是 setup , 它是在容器加载 bean 的时候被调用.第二个方法是 teardown 它是在容器卸载类的时候被调用. The bean 标签有两个重要 ...
- Linux如何查看某个端口是否被占用
1.netstat -anp |grep 端口号 2.netstat -nultp(此处不用加端口号) 3.netstat -anp |grep 82 查看82端口的使用情况
- 微信APP支付V3版本签名 && APP下单/订单查询接口Python版实现
问题背景 最近接入微信支付,微信官方并没有提供Python版的服务端SDK,因而只能根据文档手动实现一版,这里记录一下微信支付的整体流程.踩坑过程与最终具体实现. 微信支付APP下单流程 根据微信官方 ...