JAVA网络编程

Java网络编程
计算机网络就是通过传输介质、通信设施和网络协议,把分散在不同地点的计算设备互连起来,实现资 源共享和数据传输的系统。

TCP/IP协议簇
TCP/IP协议栈是一系列网络协议的总和,是构成网络通信的核心骨架。

分层模型
TCP/IP协议栈的分层模型常见的有2个,分别是TCP/IP参考模型和ISO组织提出的OSI参考模型。在 TCP/IP参考模型中将网络分为网络访问层【数据链路层】、互联网层【网络层】、传输层、应用层共4 层,OSI参考模型分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层共7个层。

OSI参考模型是一个开放的通信系统互联参考模型

TCP/IP参考模型
TCP/IP协议采用4层架构,从上向下分为应用层、传输层、网络层和链路层,每一层都可以使用其下一层 的协议完成自己的需求,不允许下层访问上层

当通过http协议发起一个请求时,从上往下依次通过应用层、传输层、网络层和链路层,每一层相关协 议都依次对数据包进行处理,并携带响应的首部,最终在链路层生成以太网数据包,通过物理介质进行 传输,传送到对方主机后,对方主机再依次从下向上使用响应协议进行拆包,最终经应用层数据交给应 用程序进行处理

配送车就是物理介质、配送站就是网关、快递员就是路由器、收货地址就是IP地址、联系电话就是MAC地址

三次握手
TCP是面向连接的协议,连接连接需要有3个阶段:连接建立、数据传送和连接释放。其中连接建立需要 经历3个步骤,通常称为三次握手

1、第一次握手,客户端发起请求

2、第二次握手,服务器端回传确认

3、第三次握手,客户端回传确认

四次挥手
由于TCP连接是双工的,所以每个方向都必须单独进行关闭

粘包
多个数据包存储在缓存中,对数据包的处理由于无法确认边界,所以经常采用估测值大小进行数据的读 写,如果发送和接收数据的双方size不一致时,会使用发送方发送的若干个包数据到接受方接收时粘成 一个包

原因
既可以是发送方造成的,也可能是接收方造成。粘包并不是TCP协议造成的,出现是因为应用层设计的 缺陷 Nagle算法通过减少数据包数量的方式提供TCP传输性能

解决方案
应用层协议自己划分消息边界,常见的方案有基于长度或者基于终结符号

拥塞控制
防止过多的数据注入网络,以避免使网络中的路由器或者链路过载

拥塞控制前提是网络能够承受现有的网络负荷

不同于流量控制,流量控制就是拟制发送方发送数据的速率,以便使接收方能够来得及接收数据

拥塞控制的机制
慢开始、拥塞避免、快重传和快恢复

慢开始就是当主机发送数据时,先进行探测,可以由小到大逐渐增加发送窗口
拥塞避免是让拥塞窗口缓慢增大,不是加倍,而是加1
不使用快重传就是当发送方并没有在规定的时间内收到确认,则拥塞窗口减少到1,并执行慢开始 算法;快重传要求结束方每收到一个乱序的报文后立即确认
和快重传机制一起使用的是快恢复,将拥塞窗口的大小设置为慢开始的上限值的一半
IP地址
在网络中定位一个机器需要通过IP地址,IP协议可以分为IPv4和IPv6两种,IPv4采用的是点分十进制的 计法,例如192.168.1.8

Java中提供了一个InetAddress实现对IP地址的封装,子类Inet4Address和Inet6Address,这个类一般 会和Socket一起使用

InetAddress没有公共的构造方法,必须通过使用静态方法获取对应的实例

ping www.baidu.com

InetAddress ia=InetAddress.getByName(“www.baidu.com”);//依赖DNS
System.out.println(ia);//输出格式为www.baidu.com/14.215.177.39
System.out.println(ia.getHostName());//获取主机名称www.baidu.com
System.out.println(ia.getHostAddress());//获取主机对应的IP地址14.215.177.39
InetAddress ia2=InetAddress.getLocalHost();//获取当前主机的IP地址

特殊方法isReachable用于测试是否可以到达指定的地址,防火墙或者服务器配置可能会阻塞请求,使得 访问指定地址时处于不用达状态

InetAddress ia = InetAddress.getByName(“14.215.177.254”);//参数既可以是主机名称,也可以是IP地址
//参数int类型,表示超时时间,单位ms
boolean bb=ia.isReachable(2000);
System.out.println(bb);

URL编程
java.net.URL对象用于代表一个网络环境的资源,资源可以是简单的文件或者目录,也可以是复杂对象 的引用,例如数据库或者搜索引擎的查询。URL使用协议名、主机名、端口号和资源组成,基本格式为 protocol://host:port/resource,例如http://www.yan.com:80/index.php,由于不同的协议有对应的标 准端口号,如果使用标准端口,这个端口号可以省略,http协议的标准端口号为80

URL统一资源定位器,实际上就是一个资源的指针
URI统一资源标识符,实际上就是一个URL的名称
目前考虑到http协议缺少安全

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值