java网络编程--2 IP,端口,通信协议,TCP/UDP对比
java网络编程--2 IP,端口,通信协议,TCP/UDP对比
1.3、IP
ip地址:InetAddress
唯一定位一台网络上的计算机
127.0.0.1 :本机localhost
IP地址的分类
- ipv4/ipv6
- IPV4 127.0.0.1,4个字节组成。0-255,总共42亿个;有30亿都在北美,亚洲只有4亿,2011年就用尽了
- IPV6 2001:0BAC:AAAA:AAAA:AAAA:AAAA:AAAA:AAAA ,共16个字节,128位,8个无符号整数。可以为地球的每一粒沙子都分配一个IP。
- 公网(互联网)- 私网(局域网)
- ABCD类地址
- A类网络的IP地址范围为:1.0.0.1-126.255.255.254; 一个A类IP地址由1字节(每个字节是8位)的网络地址和3个字节主机地址组成,网络地址的最高位必须是“0”,即第一段数字范围为1~126。每个A类地址可连接16387064台主机,Internet有126个A类地址。
- B类网络的IP地址范围为:128.1.0.1-191.255.255.254; 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,即第一段数字范围为128~191。每个B类地址可连接64516台主机,Internet有16256个B类地址。
- C类网络的IP地址范围为:192.0.1.1-223.255.255.254 ; 一个C类地址是由3个字节的网络地址和1个字节的主机地址组成,网络地址的最高位必须是“110”,即第一段数字范围为192~223。每个C类地址可连接254台主机,Internet有2054512个C类地址。
- D类为多播地址:IP地址的最前面为“1110”,所以地址的网络号取值于224~239之间。
- 192.168.xx.xx,专门给组织内使用
- ABCD类地址
- ipv4/ipv6
域名:记忆IP问题
- IP:记忆IP地址。越短越值钱。
package com.ssl.lesson01;
import java.net.InetAddress;
import java.net.UnknownHostException;
//测试IP
public class TestInetAddress{
public static void main(String[] args) {
try {
//查询本机地址
InetAddress inetAddress = InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress);
InetAddress inetAddress4 = InetAddress.getByName("localhost");
InetAddress inetAddress3 = InetAddress.getLocalHost();
System.out.println(inetAddress4);
System.out.println(inetAddress3);
//查询网络地址
InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");
System.out.println(inetAddress2);
//常用方法
System.out.println(inetAddress2.getAddress()); //一般不用
System.out.println(inetAddress2.getCanonicalHostName()); //获取规范名字 ip
System.out.println(inetAddress2.getHostAddress()); //ip
System.out.println(inetAddress2.getHostName()); //域名,或者电脑名
/**
* [B@4554617c
* 39.156.66.14
* 39.156.66.14
* www.baidu.com
*/
} catch (UnknownHostException e) {
throw new RuntimeException(e);
}
}
}
1.4、端口Port
端口表示计算机上的一个程序的进程。
不同的进程有不同的端口号!用来区分软件
被规定范围:0-65535 ,16位,2byte;
TCP端口、UDP端口不冲突。所以可用通信端口有65536*2,单个协议下端口号不能冲突
端口分类
- 公有端口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 "5900" #查看指定的端口
tasklist|findstr "8696" #查看指定端口的进程
Ctrl+shift+ESC #打开任务管理器
- 公有端口0-1023
访问端口号
package com.ssl.lesson01; import java.net.InetSocketAddress; public class TestInetSocketAddress {
public static void main(String[] args) {
InetSocketAddress inetSocketAddress1 = new InetSocketAddress("127.0.0.1",8080);
InetSocketAddress inetSocketAddress2 = new InetSocketAddress("localhost",8080);
System.out.println(inetSocketAddress1);
System.out.println(inetSocketAddress2); //使用方法
System.out.println(inetSocketAddress1.getAddress()); //获取ip地址
System.out.println(inetSocketAddress1.getHostName()); //获取本机ip地址
System.out.println(inetSocketAddress1.getPort()); //获取端口号
/*
/127.0.0.1
127.0.0.1
8080
*/ }
}
1.5、通信协议
协议:约定!
网络通信协议:速率,传输码率,代码结构,传输控制......
非常复杂,所以大事化小,分层解决!!
TCP/IP协议簇:实际上是一组协议 用户传输协议/网络互联协议
传输层重要的两个协议:
- TCP:用户传输协议
- UDP:用户数据报协议
TCP UDP 对比
TCP:打电话
- 连接,稳定
- 三次握手,四次分手
/**
三次握手:
A:你瞅啥 SYN=1,seq=x;
B:瞅你咋地 SYN=1,ACK=1,seq=y,ack=x+1;
A:干一场 ACk=1,seq=x+1,ack=y+1;
四次分手
A:我要走了 FIN=1,seq=u;
B:你真的要走了吗 ACK=1,seq=y,ack=u+1;
B:你真的真的要走了吗 FIN=1,ACK=1,seq=w,ack=u+1;
A:我真的要走了! ACK=1,seq=u+1,ack=w+1;
*/
- 客户端、服务端
- 传输完成,释放连接,效率低
UDP:发短信
- 不连接,不稳定
- 客户端、服务端:没有明确的界限
- 不管有没有准备好,都可以发给你
- DDOS:洪水攻击(饱和攻击)。
java网络编程--2 IP,端口,通信协议,TCP/UDP对比的更多相关文章
- Java 网络编程(五) 使用TCP/IP的套接字(Socket)进行通信
链接地址:http://www.cnblogs.com/mengdd/archive/2013/03/10/2952616.html 使用TCP/IP的套接字(Socket)进行通信 套接字Socke ...
- Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
今日内容:socket网络编程 1.OSI七层协议 2.基于tcp协议的套接字通信 3.模拟ssh远程执行命令 4.tcp的粘包问题及解决方案 5.基于udp协议的套接字 ...
- 网络编程 套接字socket TCP UDP
网络编程与套接字 网络编程 网络编程是什么: 网络通常指的是计算机中的互联网,是由多台计算机通过网线或其他媒介相互链接组成的 编写基于网络的应用程序的过程序称之为网络编程. 网络编程最主要的工 ...
- ~~网络编程(三):TCP/UDP~~
进击のpython ***** 网络编程--TCP/UDP协议 其实你也发现了,应用层是交给应用来处理的,我们什么也做不了 相较于网络编程来说,我们更重要的是在做应用层和传输层的对接 因为你也看到了, ...
- java 网络编程(三)---TCP的基础级示例
下面是TCP java网络编程的基础示例: tcp传输:客户端建立过程的思路:1.创建TCP客户端的Socket服务,使用的是socket对象,建议在创建的过程中,就明确了目的地和要连接的主机2.如果 ...
- 从零探索Java网络编程01之 TCP/IP 与 Socket
最近完成了几项比较简单的项目, 终于是在996里偷了点闲暇时光, 想着来研究研究些啥吧? 一个普通的控制台日志映入了我的眼帘(孽缘呀): (图中使用 SpringBoot 的 log4j 来输出日志 ...
- 【Java】Java网络编程菜鸟进阶:TCP和套接字入门
Java网络编程菜鸟进阶:TCP和套接字入门 JDK 提供了对 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protoco ...
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- 网络编程的基本概念,TCP/IP协议简介
8.1.1 网络基础知识 计算机网络形式多样,内容繁杂.网络上的计算机要互相通信,必须遵循一定的协议.目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议. 网络编程的目的就是指直接或 ...
- java网络编程socket\server\TCP笔记(转)
java网络编程socket\server\TCP笔记(转) 2012-12-14 08:30:04| 分类: Socket | 标签:java |举报|字号 订阅 1 TCP的开销 a ...
随机推荐
- Android 系统完整的权限列表
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 android.perm ...
- APP性能测试——热启动耗时测试
热启动耗时: 即当启动应用时,后台已有该应用的进程(我们模拟按下HOME键),打开软件,直到进入到首页activity页面,并计算耗时. 示例代码: import os import time def ...
- c++学习7 指针与数组
一 二维数组与数组指针的关系 二维数组名,代表的是第0行的行地址,"+1"是跳过一个行.而取" * "的话,则是在当前行地址基础上再取列地址,那么如果我们再取一 ...
- verilog 硬件描述语言
第一章 绪论 verilog--数字电路设计技术--ASIC/SOC芯片设计--协议pcie SATA USB--系统知识(个人计算机,芯片组,网络连接,嵌入式系统,硬件和软件的互操作) 第二章 寄存 ...
- 一种典型的不知循环次数的c语言循环问题
问题如图 代码如下 1 #define _CRT_SECURE_NO_WARNINGS 1 2 #include<stdio.h> 3 int main() 4 { 5 puts(&quo ...
- Linux系统管理实战-配置静态IP
配置静态IP 前置条件 防火墙: EL7 EL6 查看状态: # systemctl status firewalld # /etc/init.d/iptables status 立即关闭: # sy ...
- sql server 计算时间差的一部分函数【转】
在做Sql Server开发的时候有时需要获取表中今天.昨天.本周.上周.本月.上月等数据,这时候就需要使用DATEDIFF()函数及GetDate()函数了.DATEDIFF ( datepart ...
- 鸣人的影分身【按照前i个数,最小数是不是0,建立转移方程】
鸣人的影分身 题意 鸣人最多有n个分身,m的能量.分身的能量可以为0. 问有多少种方案数. 思路 很容易定义状态:f[i] [j]: 前i个分身,共花费能量j的方案数. 状态转移:刚开始想的枚举第i个 ...
- SQL SERVER 内存优化表踩坑记
背景 因为生产应用需要刷新大量的状态数据到数据库中用于客户端的显示,于是新建了一张状态表,表内行数固定,状态更新到列内.刚开始运行时还行,更新都很及时,查询速度也不慢.于是就这样使用了有一个月的时间. ...
- Q:windows系统如何开机启动批处理脚本
方法1 1.win+r输入gpedit.msc进入本地策略管理器 2.点击windows设置下的脚本(启动/关机),然后双击启动. 3.点击添加,然后点击浏览,选择批处理文件然后点击确定. 方法2 也 ...