java中的TCP/UDP连接

本文介绍了计算机网络的基础,包括五层协议模型和TCP/IP体系结构。讲解了TCP和UDP的区别,如TCP的三次握手和四次挥手确保连接可靠性,而UDP则是无连接的。通过实例展示了在Java中如何使用Socket/ServerSocket实现TCP连接,以及如何使用DatagramPacket/DatagramSocket实现UDP通信。
摘要由CSDN通过智能技术生成

浅显理解计算网络

在原始的计算机,每个计算机都是独立的,他只能用于实现计算。就是一个高级的计算器。就像人和人之间需要通信,如何让计算机和计算机之间通信使其发展的关键,很多个计算机互相通信也就形成了计算机网络,所以计算机网络就是解决计算机之间如何通信的。在通信的世界中,最重要的就是规则(协议),就好像中国人和中国人通信,都遵循中文的规则;在计算机中通信中同样如此。因此,ISO(International Organization for Standards,国际标准化组织。) 制定了一个国际标准OSI(Open Systems Interconnection,开放式通信系统互联参考模型。) ,对通信系统进行了标准化。而经过发展,最后形成的TCP/IP的体系结构成为广泛公用的业界标准。
在这里插入图片描述

五层协议

我们就是简单的理解什么是五层协议,我们换一种浅显的方式理解。
我们知道计算机真正的通信就是电信号的交流 ,我们这里的五层传输模型,仅仅是人们为了更好的理解计算机之间的交流,而定义的模型。我们可以把这种模型看作一个一层层下沉的传输标准模型。
比如我们要将A电脑中a程序(进程)中的(“你好”)传给B电脑中的b程序“hello”;

  • 我们应用层规定协议应将(“你好”)这种数据格式按照一些协议转化成网络通用的标准数据格式;如果是在一个计算机上,a程序的“你好”就只用使用应用层的协议直接显示到b程序“hello”。应用层的协议(DNS域名映射,Http协议…等等)。这就时将数据转化成一个消息
  • 然后这种标准的数据格式(消息)来到运输层而运输层的主要任务就是负责两台机器进程之间的通信提供通用的数据传输服务;要确保通用的数据传输服务,这就好像在这两个计算机之间有了一个虚拟的通道。(端对端的通道)。这也就用到了TCP/UDP协议,再在消息的首部填上端口等内容构成
  • 然后段传到了下一层网络层,网络层顾名思义他要解决的问题就是数据在网络上传输的问题,再此处的网络并不是我们所理解网络上网的那个网,你可以想象成一个有一个的计算机通过网线,路由器这些硬件设施连接起的大网,而网络层解决从A计算机到B计算机可能会经过很多个数据链路,也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。因此我们需要IP协议在上一层传下来的段中加入IP组形成IP数据报,简称数据报
  • 数据报来到下一层数据链路层,这层负责相邻节点间链路上传输,因此他必须要知道相邻连个节点(电脑)上的真实唯一的物理地址,这就需要ARP协议根据上一层的IP地址查询对应的物理地址,再在IP数据报的首部添加MAC地址信息形成。在向下传输。
  • 物理层实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异,将数据的0、1转换为电压和脉冲光传输给物理的传输介质,物理层就根据真实的MAC地址开始传输
  • 这就是一次完整自顶向下的封包,从A计算机将a进程的“你好”进行封包,进行传输。当到达B计算机,要在b进程上显示“Hello”,则需要自地向上的解包
    简单的表示的一个包
一个图片数据

Tcp/Udp

  • TCP:一种面向有连接的传输层协议,它可以保证两端通信主机的通信可达,它可以保证正确处理传输过程中的丢包,传输顺序错乱,传输数据确实等等异常。但是为了实现这些功能,他也定义了各种各样的复杂规范。不利已视频会议等场合

  • UDP:面向无连接的传输层协议,就是发生端只负责发,不管接收端接收到了没有


类型 是否面向连接 传输可靠性 传输形式 传输效率 所需资源 应用场景 首部字节
Tcp 可靠 字节流 要求通信可靠 20-60
Udp 不可靠 数据报文段 要求通信速度 8个字节

对于Tcp的传输可靠性
建立连接:三次握手
在这里插入图片描述
这不是简单明了吗;双方都确认了对放可以听到自己说话,自己也可以听到对放说话。这种通信还不可靠吗。这三次握手保证了连接时的可靠,但是当挂断连接呢,如果有一方没有说完呢,另外一方就啪唧把电话挂了,那不就造成数据的丢失了因此有了四次挥手
四次挥手:在这里插入图片描述
至于其中三次握手和四次挥手的细节,这是计算机网络中的跟具体的深入,菜蔬学浅不多哔哔。

使用Socket/ServerSocket实现TCP连接

现在我们简单了解数据传输的简单过程,以及传输层中TCP/UDP简单概念,下面一个简单的案例实现一下客户端和服务段的通信


/**
 * @program: SxtJava
 * @description: 服务端,监听客户
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值