*阿炮的Java笔记010号*-学会网络编程,又可以在不会编程的人面前装13了!

本文介绍了网络编程的基本概念,包括TCP/IP协议的四层模型,详细讲解了TCP与UDP的区别,以及网络通信中的三次握手和四次挥手过程。同时阐述了网络编程的三要素:通信协议、IP地址和端口,并提到了InetAddress类和Socket在通信中的作用。
摘要由CSDN通过智能技术生成

老生常谈…对于大佬们根本都不用看的博客!

对于像我这种菜鸡还是得一步一步的来!如果有错误请大佬们指点指点!

网络编程

介绍

网络编程 ,就是通过某种通信协议,实现两台计算机的通信的程序。接下来让我带你了解网络编程吧!

网络的通信协议

介绍

计算机网络可以让多台计算机进行连接,在同一个网络下的计算机进行连接和通信都要遵守规则,我们称之为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一的规范,双方必须达成一致遵守规范才能完成数据的交换。
接下来就是介绍最熟悉的TCP/IP协议了!不懂?,出门百度!

通信协议模型

废话不多说直接上图:

在这里插入图片描述

图上共两种协议模型,其中OSI的模型过于理想,没有进行大范围的推广;TCP/IP协议就是现在的国际标准。
TCP/IP协议又称传输控制/因特网互联协议,它定义了计算机如何连入因特网以及数据传输的标准。它采用了4层的分层模型。由上到下咱们简单介绍一下,其他详解随便搜搜都有,太多了其实我也看不下去。

  • 应用层:主要负责应用程序的协议;
  • 传输层:主要负责网络程序的通信;
  • 网络层:主要就是将传输的数据进行分组打包,送到目标计算机或网络;
  • 网络访问层:主要就是定义物理传输的通道,大概意思就是网络驱动呗;
    根据自己的理解写的,不喜勿喷!详情请出门百度!

传输层有两个重要的TCP 和 UDP 协议,拿出来简单说一说,有很多优秀的文章,可以自行搜索一下。

TCP 和 UDP 协议

UDP的简介

  • 统称用户数据报协议
  • 非面向连接,不可靠:只管发送,不管数据到不到达,这不是纯纯的看运气?
  • 数据大小被限制在64kb以内,超出这个范围的就不发送了
  • 数据报是它的基本单位
  • 应用场景:视频,音频这些场景。因为丢帧什么的影响不大,如果网络差可苦了曾经上网课的我了。

TCP的简介

  • 统称传输控制协议
  • 面向连接,可靠: 只要双方进行连接,才能进行发送。如果数据发送失败,他会进行重发,保证数据完整的发送到甲方(嘿嘿,懂得都懂)!
  • 应用场景:下载文件、浏览网页等

其中三次握手和四次挥手是它的核心,也是面试的高频问题。我就不放图了,我看多了也吐。就两个角色,一个客户端,一个服务器。还有一些标识,我介绍一下。
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
seq(Sequence number顺序号码)
ack(Acknowledge number确认号码)
FIN(finish 结束)

三次握手

第一次:客户端携带着SYN和seq向服务器请求连接。
第二次:服务器会拿着SYN,ACK,seq,ack去找是哪个客户端发来的并告诉它可以进行连接。
第三次:客户端拿着SYN,seq,ack告诉服务器它也可以进行连接。

为什么是三次而不是两次呢?
就好比你想去搭讪美女,你不得上来说一句hello? 她回复你hello了,你才能进行下一步深入交流吧!

四次挥手

第一次:客户端拿着FIN,seq去告诉服务器它像断开
第二次:服务器拿着ACK,seq,ack。服务器收到客户端想要断开的想法,将最后的数据传给客户端,然后服务器不再接受任何数据
第三次:服务器发送完成数据后,会带着FIN,ACK,seq,ack去告诉客户端它可以进行断开了
第四次:客户端收到服务器可以断开连接的信息后,然后拿着ACK,seq,ack直接告诉服务器分手。然后服务器就会彻底的断开,客户端等待2MSL后没有接收到服务器的任何信息,就彻底断开

网络编程三要素

通信协议

计算机网络通信必须遵守的规则

IP地址

互联网协议地址(Internet Protocol Address),简称IP,就是服务器所在的位置。自己访问自己的地址就是127.0.0.1。

分类:

  • IPv4 :是一个 32 位的二进制数,通常被分为 4 个字节,表示成 a.b.c.d 的形式,例如 192.168.65.100 。其中 a、b 、c 、d 都是 0 ~ 255 之间的十进制整数,那么最多可以表示 42 亿个。
  • IPv6 :由于互联网的蓬勃发展,IP 地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。为了扩大地址空间,拟通过 IPv6 重新定义地址空间,采用 128 位地址长度,每 16 个字节一组,分成 8 组十六进制数,表示成 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 ,号称可以为全世界的每一粒沙子编上一个网址,这样就解决了网络地址资源数量不够的问题。

端口

通过IP知道了服务器的位置,但是服务器里有很多应用程序,所以出现了端口的概念。每个应用程序都有相应的端口。
端口号:用两个字节表示的整数,它的取值范围是 0~65535

  • 公认端口:0 ~ 1023 。被预先定义的服务通信占用,如:HTTP(80),FTP(21),Telnet(23)
  • 注册端口:1024 ~ 49151 。分配给用户进程或应用程序。如:Tomcat(8080),MySQL(3306),Oracle(1521)
  • 动态/ 私有端口:49152 ~ 65535

在运行的端口号只能是唯一的,如果你再启动一个相同的端口号,你根本起不来!就跟蹲茅坑一样,有人在蹲着这个茅坑呢,你咋蹲?只能换个空的茅坑呗!通俗易懂,言简意赅

总结

利用 协议 + IP地址 + 端口号 的组合就能进行网络通信!

InetAddress 类

通过InetAddress类的方法,我们可以对IP进行获取和操作

//根据域名获取InetAddress对象
public static InetAddress getByName()
//获取本机的InetAddress对象
public static InetAddress getLocalHost()
//获取InetAddress对象的IP地址
public String getHostAddress()
//获取InetAddress对的主机名
public String getHostName()

Socket

网络通信其实就是Socket 间的通信,通信的两端都要有Socket。

分类

  • 流套接字:使用 TCP 提供可以来的字节流服务。ServerSocket服务器套接字,Socket客户端套接字。
  • 数据报套接字:使用 UDP 提供的数据报服务。DatagramSocket,UDP用来发送和接收的套接字。

这么一看UDP好简洁,不过即将迎来新时代可能将UDP推送到最高的位置!可以看其他牛人博主的文章了解即可!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

史上最菜的山炮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值