网络通信的要素

如何实现网络中的主机互相通信?
通信双方的地址 :
1,IP
2,端口号
【比如说我们这里上课使用的就是局域网,你们连接到我的电脑,就能查看到我电脑的画面了】
一定的规则:(即,网络通信协议,有两套参考模型)
1,OSI 参考模型:模型过于理想化,未能在因特网上进行广泛推广!
2,TCP/IP 参考模型: TCP/IP 协议,事实上的国际标准。

 

小总结:
1. 网络编程中有两个主要的问题:
(1)如何准确的定位网络上一台或多台主机;定位主机上的特定的应用
(2)找到主机后如何可靠高效的进行数据传输
2. 网络编程中的两个要素:
(1)ip 和 端口号
(2)提供网络通信协议。 TCP/IP 参考模型(应用层,传输层,网络层,物理 + 数据链路层),

3,万物皆对象

IP 

ip地址:Inet Adderss

1, 唯一的标识 internet 上的计算机 ( 通信实体 )(即唯一定位一台网络上的计算机)
2,本地回环地址( hostAddress ): 127.0.0.1 主机名 ( hostName ) localhost
3, IP 地址分类方式一 : IPV4    IPV6
(1)IPV4 4 个字节组成, 4 0~255 。大概 42 亿个, 30 亿都在北美,亚洲 4 亿。 2011 年初已经用尽。以点分十进制表示,如192.168.0.1
(2)IPV6 128 位( 16 个字节),写成 8 个无符号整数,每个整数用四个十六进制位表示,数之间
用冒号隔开,如: 2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b
4, IP 地址分类方式 2 :公网地址(万维网(即互联网)使用) 和 私有地址(局域网使用)。
192.168. 开头的就是私有地址,范围即为 192.168.0.0 ~ 192.168.255.255 ,专门为组织机构内部使用
5,【查看 JDK 帮助文档 => InetAddress 类,代表 IP
6, 特点:不便于记忆,我们常使用 域名 (记忆IP问题)来访问: www.baidu.com
7, https://blog.kuangstudy.com/ => DNS 域名解析( 150.109.117.44 => 现在本机的 hosts 文件,
判断是否有输入的域名地址,没有的话,再通过 DNS 服务器,找主机。
hosts 文件地址: c:\windows\system32\drivers\etc\hosts
import java.net.InetAddress;
import java.net.UnknownHostException;

//测试IP
public class TestInetAddress {
    public static void main(String args[]){
        try{
            //查询本机地址
            InetAddress inetAddress1 = InetAddress.getByName("127.0.0.1");
            System.out.println(inetAddress1);
            InetAddress inetAddress3 = InetAddress.getByName("localhost");
            System.out.println(inetAddress3);
            InetAddress inetAddress4 = InetAddress.getLocalHost();
            System.out.println(inetAddress4);
            //查询网站ip地址
            InetAddress inetAddress2 = InetAddress.getByName("www.baidu.com");
            System.out.println(inetAddress2);
            //常用方法
            System.out.println(inetAddress2.getAddress());
            System.out.println(inetAddress2.getCanonicalHostName());  //规范的名字
            System.out.println(inetAddress2.getHostAddress());  //ip
            System.out.println(inetAddress2.getHostName());  //域名,或者自己电脑的名字
        }catch(UnknownHostException e){
            e.printStackTrace();
        }
    }
}

端口号

端口表示计算机上的一个程序的进程:
1,不同的进程有不同的端口号,用来区分软件
2,被规定为一个 16 位的整数 0~65535
3,TCP UDP 各有 65535 个端口,单个协议下端口不能冲突
4,端口分类:
(1)公认端口: 0~1023 。被预先定义的服务通信占用端口。
           HTTP 默认端口 : 80
           HTTPS 默认端口: 443
           FTP 默认端口: 21
           Telnet 默认端口: 23
(2)注册端口: 1024~49151 、分配给用户进程或应用程序。
           tomcat 默认端口: 8080
           Mysql 默认端口: 3306
           Oracle 默认端口: 1521
(3)动态、私有端口: 49152~65535
netstat -ano # 查看所有端口
netstat -ano |findstr "6732" # 查看指定端口
tasklist|findstr "6732" # 查看指定端口的进程
# 使用任务管理器查看 PID          Ctrl+shift+ESC
端口号与 IP 地址的组合,得出一个网络套接字: Socket ,所以说一些网络编程也被称为 Socket 编程
import java.net.InetSocketAddress;

public class TestInetSocketAddress {
    public static void main(String args[]){
        InetSocketAddress socketAddress = new InetSocketAddress("127.0.0.1",8080);
        InetSocketAddress socketAddress2 = new InetSocketAddress("localhost",8080);
        System.out.println(socketAddress);
        System.out.println(socketAddress2);
        System.out.println(socketAddress.getAddress());  //地址
        System.out.println(socketAddress.getHostName()); 
        System.out.println(socketAddress.getPort());  //端口
    }
}

网络通讯协议

协议:就好比我们都说的普通话,大家才能听懂我讲的,但是我们还有自己的方言!
网络通信协议:
计算机网络中实现通信必须有一些约定,即通信协议,对速率,传输代码,代码结构,传输控制步骤,出错控制等制定标准。
问题:网路协议太复杂?
计算机网络通信涉及内容很多,比如指定源地址和目标地址,加密解密,压缩解压缩,差错控制,流量控制,路由控制,如何实现如此复杂的网络协议呢?
通信协议分层的思想
在制定协议时,把复杂成份分解成一些简单的成份,再将他们复合起来。最常用的复合方式是层次方式,即同层间可以通信,上一层调用下一层,而与再下一层不发生关系。各层互不影响,利于系统的开发和扩展。
TCP/IP 协议簇
1,传输层协议中有两个非常重要的协议:
(1)用户传输协议 TCP (Transmission Control Protocol)
(2)用户数据报协议( User Datagram Protocol
2,Tcp/IP 以其两个主要协议: 传输控制协议: TCP ,和网络互联协议: IP ,而得名,实际上是一组协议,包括多个具有不同功能且互为关联的协议。
3,IP Internet Protocol )协议是网络层的主要协议,支持网间互联的数据通信。
4,TCP/IP 协议模型从更实用的角度出发,形成了高效的四层体系结构,即物理链路层, IP 层,传输层和应用层
TCP UDP 对比
1,TCP 协议
(1)使用 TCP 协议前,必须建立 TCP 连接,形成传输数据通道;(连接、稳定)
(2)传输前,采用 三次握手 方式,点对点通信,是可靠的。(三次握手、四次挥手)
(3)TCP 协议进行通信的两个应用进程:客户端,服务端。
(4)在连接中可进行大数据量的传输
(5)传输完毕,需要释放已建立的连接,效率低
(6)举例:打电话

 

 

2,UDP 协议
(1)将数据,源,目的封装成数据包,不需要建立连接(不连接、不稳定)
(2)每个数据报的大小限制在 64K
(3)发送方不管对方是否准备好,接收方收到也不确认,故是不可靠的
(4)可以广播发送
(5)发送数据结束时,无需释放资源,开销小,速度快。
(6)客户端、服务端:没有明确的界限
(7)举例:发短信,导弹(饱和攻击)

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值