当前位置:

首页 > 系统应用 > 7.6.1 Socket学习网络基础准备

7.6.1 Socket学习网络基础准备

本节引言: 为了照顾没学过Ja va Socket的初学者,或者说捋一捋Android开发中涉及到的网络协议相关的概念, 毕竟面试的时候,面试官来了句给我说下网络协议有几层?那么IP协议在哪层?Socket是什么鬼? 分哪几种?TCP和UDP协议又在哪层?有什么区别...嗯,这...所以学习本节概念

本文目录

    本节引言:

    为了照顾没学过Ja va Socket的初学者,或者说捋一捋Android开发中涉及到的网络协议相关的概念, 毕竟面试的时候,面试官来了句给我说下网络协议有几层?那么IP协议在哪层?Socket是什么鬼? 分哪几种?TCP和UDP协议又在哪层?有什么区别...嗯,这...所以学习本节概念性的理论还是很有 必要的!那么话不多说,开始本节内容~

    1.OSI七层网络模型浅析

    当然,我们不是专业搞网络工程的,只要知道有哪些层,大概是拿来干嘛的就可以了!

    OSI七层网络模型(从下往上):

    • 物理层(Physical):设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的 环境。可以理解为网络传输的物理媒体部分,比如网卡,网线,集线器,中继器,调制解调器等! 在这一层,数据还没有被组织,仅作为原始的位流或电气电压处理,这一层的单位是:bit比特
    • 数据链路层(Datalink):可以理解为数据通道,主要功能是如何在不可靠的物理线路上进行 数据的可靠传递,改层作用包括:物理地址寻址,数据的成帧,流量控制,数据检错以及重发等! 另外这个数据链路指的是:物理层要为终端设备间的数据通信提供传输媒体及其连接。媒体是 长期的,连接是有生存期的。在连接生存期内,收发两端可以进行不等的一次或多次数据通信。 每次通信都要经过建立通信联络和拆除通信联络两过程!这种建立起来的数据收发关系~ 该层的设备有:网卡,网桥,网路交换机,另外该层的单位为:帧
    • 网络层(Network):主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发 送方路由到接收方,所谓的路由与寻径:一台终端可能需要与多台终端通信,这样就产生的了 把任意两台终端设备数据链接起来的问题!简单点说就是:建立网络连接和为上层提供服务! 该层的设备有:路由!该层的单位为:数据包,另外IP协议就在这一层!
    • 传输层(Transport):向上面的应用层提供通信服务,面向通信部分的最高层,同时也是 用户功能中的最低层。接收会话层数据,在必要时将数据进行分割,并将这些数据交给网络 层,并且保证这些数据段有效的到达对端!所以这层的单位是:数据段;而这层有两个很重要 的协议就是:TCP传输控制协议与UDP用户数据报协议,这也是本章节核心讲解的部分!
    • 会话层(Session):负责在网络中的两节点之间建立、维持和终止通信。建立通信链接, 保持会话过程通信链接的畅通,同步两个节点之间的对话,决定通信是否被中断以及通信中断时 决定从何处重新发送,即不同机器上的用户之间会话的建立及管理!
    • 表示层(Presentation):对来自应用层的命令和数据进行解释,对各种语法赋予相应 的含义,并按照一定的格式传送给会话层。其主要功能是"处理用户信息的表示问题,如编码、 数据格式转换和加密解密,压缩解压缩"等
    • 应用层(Application):OSI参考模型的最高层,为用户的应用程序提供网络服务。 它在其他6层工作的基础上,负责完成网络中应用程序与网络操作系统之间的联系,建立与结束使用者之间的联系,并完成网络用户提出的各种网络服务及应用所需的监督、管理和服务等各种协议。此外,该层还负责协调各个应用程序间的工作。应用层为用户提供的服务和协议有:文件服务、目录服务、文件传输服务(FTP)、远程登录服务(Telnet)、电子邮件服务(E-mail)、打印服务、安全服务、网络管理服务、数据库服务等。

    好的上面我们浅述了OSI七层网络模型,下面总结下:

    OSI是一个理想的模型,一般的网络系统只涉及其中的几层,在七层模型中,每一层都提供一个特殊 的网络功能,从网络功能角度观察:

    • 下面4层(物理层、数据链路层、网络层和传输层)主要提供数据传输和交换功能, 即以节点到节点之间的通信为主
    • 第4层作为上下两部分的桥梁,是整个网络体系结构中最关键的部分;
    • 上3层(会话层、表示层和应用层)则以提供用户与应用程序之间的信息和数据处理功能为主。

    简言之,下4层主要完成通信子网的功能,上3层主要完成资源子网的功能。

    ——以上内容参考自:OSI七层模型详解

    2.TCP/IP四层模型

    TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。 TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层 (对应OSI的第四层)。TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供 的网络来完成自己的需求。这4层分别为:

    • 应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、 网络远程访问协议(Telnet)等。
    • 传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、 用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中, 这一层负责传送数据,并且确定数据已被送达并接收。
    • 网络互连层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目 的主机(但不检查是否被正确接收),如网际协议(IP)。
    • 主机到网络层:对实际的网络媒体的管理,定义如何使用实际网络 (如Ethernet、Serial Line等)来传送数据。

    3.TCP/UDP区别讲解

    好吧,前两点侃侃而谈,只是给大家普及下OSI七层模型和TCP/IP四层模型的概念,接下来要讲的是 和我们Socket开发相关的一些概念名词了!

    1)IP地址

    2)端口

    1. 用于区分不同的应用程序

    2. 端口号的范围为0-65535,其中0-1023未系统的保留端口,我们的程序尽可能别使用这些端口!

    3. IP地址和端口号组成了我们的Socket,Socket是网络运行程序间双向通信链路的终结点, 是TCP和UDP的基础!

    4. 常用协议使用的端口:HTTP:80,FTP:21,TELNET:23

    3)TCP协议与UDP协议的比较:

    TCP协议流程详解:

    首先TCP/IP是一个协议簇,里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议, 因为TCP,IP协议是两个很重要的协议,就用他两命名了。

    下面我们来讲解TCP协议和UDP协议的区别:

    TCP(Transmission Control Protocol,传输控制协议)属于一种面向连接的协议。说得直白一点,通信双方在正式收发数据之前,必须先把这条可靠连接建立起来。这也正是面试里反复出现的高频考点:TCP的三次握手和TCP的四次挥手。三次握手: 当需要建立一个TCP连接时,客户端和服务端一共要发送3个数据包,用来确认这条连接已经成功建立。在Socket编程中,这个过程通常由客户端调用connect来触发,具体流程图如下:

    • 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server, Client进入SYN_SENT状态,等待Server确认。
    • 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位 SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求 ,Server进入SYN_RCVD状态。
    • 第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK 置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则 连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以 开始传输数据了。

    四次挥手: 终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。 在Socket编程中,这一过程由客户端或服务端任一方执行close来触发,具体流程图如下:

    • 第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入 FIN_WAIT_1状态
    • 第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同, 一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
    • 第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK 状态。
    • 第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。 另外也可能是同时发起主动关闭的情况:

    另外还可能有一个常见的问题就是:为什么建立连接是三次握手,而关闭连接却是四次挥手呢? 答:因为服务端在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里 发送给客户端。而关闭连接时,当收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还 能接收数据,己方也未必全部数据都发送给对方了,所以己方可以立即close,也可以发送一些 数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会 分开发送。

    UDP协议详解:

    UDP(User Datagram Protocol)用户数据报协议,非连接的协议,传输数据之前源端和终端不 建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。 在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽 的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。 相比TCP就是无需建立链接,结构简单,无法保证正确性,容易丢包

    ——上述内容部分摘自:

    TCP/IP三次握手与四次挥手

    TCP和UDP的区别(转)

    4.Ja va中对于网络提供的几个关键类:

    针对不同的网络通信层次,Ja va给我们提供的网络功能有四大类:

    • InetAddress: 用于标识网络上的硬件资源
    • URL: 统一资源定位符,通过URL可以直接读取或者写入网络上的数据
    • Socket和ServerSocket: 使用TCP协议实现网络通信的Socket相关的类
    • Datagram: 使用UDP协议,将数据保存在数据报中,通过网络进行通信

    本节我们只介绍前两个类,Socket与Datagram到TCP和UDP的章节再讲解!

    ~InetAddress的使用例子:

    示例代码:

    public class InetAddressTest {
        public static void main(String[] args) throws Exception{
            //获取本机InetAddress的实例:
            InetAddress address = InetAddress.getLocalHost();
            System.out.println("本机名:" + address.getHostName());
            System.out.println("IP地址:" + address.getHostAddress());
            byte[] bytes = address.getAddress();
            System.out.println("字节数组形式的IP地址:" + Arrays.toString(bytes));
            System.out.println("直接输出InetAddress对象:" + address);
        }
    }
    运行结果图:

    ~URL:这个就不用说了吧,忘了可以看会前面Http协议讲解那里~

    本节小结:

    这一节基本都是概念性的内容,读起来可能会有点吃力,不过也不用太有压力。只要先把七层模型里每一层的名称、各自大致负责什么,以及 TCP 的三次握手、四次挥手这些核心点弄明白,其实就够用了!当然了,这套内容很多时候更像是面试里的“标准题”——真到实际开发场景里,谁会一直揪着这些细节不放?通常还是直接上 Socket。好,下一节就正式进入 Android 中的 Socket 通信。

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    系统应用
    相关文章 更多
    上海干部在线学习网个人登录通道
    上海干部在线学习网个人登录通道

    上海干部在线学习网个人登录入口位于官网首页右上角“学员登录区”,老学员直接输入账号密码,新学员需完成实名认证。平台支持PC端、手机APP,采用双因子验证与密码安全策略,学习数据多端自动同步。课程体系分必修、主修、选修,含视频、模拟操作及在线测试。

    Yandex引擎入口2026最新登录方式
    Yandex引擎入口2026最新登录方式

    Yandex搜索引擎的官方登录入口是https://www.yondex.net/,该平台支持多语言界面切换、智能语言识别与音译转换,并提供个性化服务及高效检索技术,满足全球用户需求。

    Yandex俄罗斯官网入口及最新搜索地址
    Yandex俄罗斯官网入口及最新搜索地址

    Yandex俄罗斯官网直达入口为https://www.yondex.net/,该平台提供网页搜索、地图导航、新闻聚合、图片视频检索等服务,支持多语言及本地化内容,集成邮箱、云存储、电商比价等生态功能。

    yandex俄语版入口及注册登录方法
    yandex俄语版入口及注册登录方法

    Yandex俄语版搜索入口为https://www.yondex.net/,进入后点击“Войти”注册账号,填写信息并验证手机号即可登录使用邮箱、云盘等服务。

    Yandex浏览器官网入口及使用指南
    Yandex浏览器官网入口及使用指南

    俄罗斯搜索引擎Yandex的官网入口是https://www.yondex.net/,该平台提供多语言搜索、地图、新闻聚合和翻译工具,其浏览器以轻量、快速、广告过滤和高兼容性为优势,搜索支持多类型内容精准查找与安全防护。

    Yandex官网入口及国际版登录指南
    Yandex官网入口及国际版登录指南

    Yandex官方网站快速入口是https://www.yondex.net/,该平台提供多语言搜索引擎、新闻聚合、翻译工具、图片视频检索及个性化推荐等核心服务,并集成地图、云存储、邮箱、日历等实用功能,支持移动端适配与夜间模式,界面简洁且加载迅速。

    Yandex官网入口及最新访问地址
    Yandex官网入口及最新访问地址

    Yandex搜索引擎官方入口是https://www.yondex.net/,该平台具备强大的多语言搜索能力、集成化的服务生态体系以及智能化的搜索体验优化功能。

    Yandex国际版入口及官网链接
    Yandex国际版入口及官网链接

    Yandex国际版官网为https://www.yondex.net/,提供英文界面,适合非俄语用户;2.https://www.yondex.net/为全球短域名,可自动跳转至对应地区版本;3.俄罗斯本地用户使用https://www.yondex.net/,内容以俄语为主,本地化程度高;4.普通用户可根据语言和需求选择相应入口。

    Yandex官网入口及网页版访问教程
    Yandex官网入口及网页版访问教程

    Yandex官方在线入口是https://www.yondex.net/,提供网页搜索、新闻、图片视频检索、地图导航等服务,并集成翻译、邮箱、云存储、日历等工具,支持个性化首页定制与电商比价功能。

    妖精漫画官网登录入口及首页指南
    妖精漫画官网登录入口及首页指南

    妖精漫画官网登录入口为https://www.yaojingmh.com。该平台资源丰富,涵盖多种题材,更新及时,分类清晰,支持多模式阅读与个性化收藏,具备评论、书架、弹幕等互动功能,界面简洁流畅,适配移动端,提供良好阅读体验。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。