网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用

这篇具有很好参考价值的文章主要介绍了网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果这篇文章可以帮助到你,劳请大家点赞转发支持一下!

从本篇文章开始就要分享网络编程的内容了,越发的感受到了编程的魅力,鸡汤来喽!!


一、网络发展各阶段

1️⃣单机阶段:计算机跟计算机之间是不互通的。即电脑A中的资源,电脑B是无法直接获取。只能通过外部设备进行拷贝。

2️⃣局域网阶段:局域网Local Area Network,简称LAN,(Local 即标识了局域网是本地,局部组建的一种私有网络)局域网内的主机等设备之间能方便的进行网络通信,又称为内网;两个局域网之间在没有连接的情况下,是无法进行通信的。

3️⃣广域网阶段:广域网,即 Wide Area Network,简称WAN。通过路由器,将多个局域网连接起来,在物理上组成很大范围的网络,就形成了广域网。广域网内部的局域网都属于其子网。

4️⃣移动互联网阶段:移动互联网,就是将移动通信和互联网二者结合起来,指互联网的技术、平台、商业模式和应用与移动通信技术结合并实践的活动的总称。


二、网络通信的三大要素

1.IP地址

IP地址就类似于🪪身份证上的家庭地址,

IP地址描述了该设备在互联网上的位置

简单来讲IP地址就是用来定位设备在网络上的位置,从而完成通信。

另一台设备将信息送到了这个位置上,那么这个位置上的设备就可以获得该信息📞。


2.端口号

在一个地址上,可能同时住了几个人。因此当信息送达后,需要通过姓名或电话来识别接收的人是谁。

端口号可以标识主机中发送数据、接收数据的进程。端口号是用来定位主机中的进程的 。(主机上的每一个进程都有一个端口号,同一主机上的不同进程的端口号必须不同)

一台主机上可能运行多个进程,因此当信息送达时,就是通过端口号来识别是哪个进程要接收信息,而后将信息送达。


3.网络协议

网络协议是网络通信(即网络数据传输)经过的所有网络设备都必须共同遵从的一组约定、规则。
最终体现为在网络上传输的数据包的格式

网络协议的作用:
网络设备之间的传输媒介是光信号和电信号。通过 “频率” 和 “强弱” 来表示 0 和 1 这样的信息。网络传输的各种信息,其实本质都是传输的一串二进制数字,要想将这一串数字变成想要传递的信息,就需要双方约定好数据格式。
网络协议就是用来规定传输数据的格式

现如今的网络设备越来越多,网络环境非常复杂,因此网络协议也非常复杂。

分层的原因
因此就将复杂的网络协议拆分成 多个协议
其中一些小协议的 作用 / 定位类似
因此就针对这些小协议进行 “分类” ,同时再针对这些不同的类进行 “分层”


分层的作用
分层最大的好处,类似于面向接口编程: 定义好两层间的接口规范,让双方遵循这个规范来对接

下层为上层提供使用接口,下层即为接口的实现类(提供方),
上层使用下层提供的接口,上层即为接口使用类(使用方),

上下层互不关心对方的细节,从而更有利于维护与扩展。
(上层不关心下层如何实现的接口,下层不关心上层怎么使用接口)

上层只能够调用相邻的下层,严禁跨层调用

而实际应用当中, TCP/IP五层网络模型 使用的最为广泛。


三、TCP/IP五层网络模型


TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

TCP/IP通讯协议采用了5层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。

网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用,JavaEE,网络,tcp/ip,网络协议,java,java-ee


各层级的用处

应用层对应咱们程序员写的应用程序,而下面四层系统内核已经封装好了,因此我们应更加关注应用层,而传输层被应用层调用,所以也应了解传输层

1️⃣ 应用层:负责应用程序间的沟通。 该层的工作内容为:得到数据以后,如何处理数据。

2️⃣传输层:负责两台主机之间的数据传输。 主要为TCP协议 / UDP协议 该层的工作内容为:保证数据可靠的从源主机传输到目标主机。

3️⃣网络层:决定数据在网络中的传输路径,数据路由(决定数据在网络的路径)。 主要为IP协议 该层的工作内容为:负责地址管理和路由选择。

如在IP协议中,通过IP地址来标识一台主机,并通过路由表 的方式规划出两台主机之间的数据传输的线路。

4️⃣数据链路层:负责设备之间的数据帧的传送和识别。 主要为Ethernet以太网协议
该层的工作内容为:负责网络上两个相邻节点(通过网线/无线/光纤直接连接的设备)之间的传输。

5️⃣物理层:负责光/电信号的传递方式。
该层的工作内容为:网络通信的基础设施 网线/光纤/网络接口等硬件设备被设计时所遵守的规范协议。


网络设备所在分层


对于 一台主机 它的操作系统内核实现了从传输层到物理层的内容 ,也即是TCP/IP五层模型的下四层;

对于 一般的路由器 它实现了从网络层到物理层 ,也即是TCP/IP五层模型的下三层;

对于 一般的交换机 它实现了从数据链路层到物理层 ,也即是TCP/IP五层模型的下两层;

对于 集线器 它只实现了物理层


四、封装和分用

在协议分层的背景下,数据通过 封装 分用 来进行网络传输。

如何封装
发送方发送数据,会把数据从应用层依次向下,交给对应的层次的协议,进行封装。

如何分用
接收方接收数据,会把数据从物理层依次向上,交给对应的层次的协议,进行解析。


概念先知

不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame),因此 数据包 == 数据报 == 数据段 == 数据帧。
经典数据报都是通过 报头 + 载荷的结构构成。

封装(Encapsulation):应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header)。
首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。

分用:数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理。


下面以QQ发送消息为案例讲解一下 封装 分用

忽略中间网络设备的转发过程,只将发送方发送时的封装过程与接收方接收时的分用过程

封装

发送方,层层封装,类似包装快递

1️⃣应用层

应用层(QQ这个程序)拿到你要发送的消息,并将消息封装成 应用层数据包 ,应用层调用传输层提供的api来处理这个数据包。
其中数据包的字段是由程序员手动规定的

网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用,JavaEE,网络,tcp/ip,网络协议,java,java-ee


2️⃣传输层

以TCP协议举例

此时传输层拿到应用层传输过来的 整个应用层数据包作为载荷再添加一个TCP报头 。然后调用 网络层提供的api 来处理这个数据报。

网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用,JavaEE,网络,tcp/ip,网络协议,java,java-ee

TCP报头中最重要的属性就是, 源端口号 (发送程序)和 目的端口号 (接收程序)


3️⃣网络层

此时网络层拿到传输层传输过来的 整个传输层数据报作为载荷再添加一个IP协议报头 。然后调用 数据链路层提供的api 来处理这个数据报。
网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用,JavaEE,网络,tcp/ip,网络协议,java,java-ee

IP协议报头中的最重要属性是 源IP (发送方主机的网络地址)与 目的IP (接收方主机的网络地址)

4️⃣数据链路层
此时数据链路层拿到网络层传输过来的 整个网络层数据报作为载荷再添加一个以太网数据帧头 / 帧尾 。然后调用 物理层提供的api 来处理这个数据帧。
以太网数据帧分为两种:封装以太网帧头 / 封装以太网帧尾

网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用,JavaEE,网络,tcp/ip,网络协议,java,java-ee
以太网帧头/尾中的最重要属性为与目的。 源mac地址 目的mac地址

mac地址也叫做物理地址,是描述一个主机在网络世界上的地址。
它的功能与IP地址很相似,但用途不同。
IP地址用来进行网络层的路径规划。
mac地址用来描述 数据链路层即将进行传输的两个相邻节点。

5️⃣物理层

物理层把上述的 一串0,1的二进制数据 转换成 光 /电 /电磁波信号 进行传输。


  • 注意:
    上述的所有数据报,以及下面将要讲到的,数据包,数据帧本质上都是字符串,而加上各种报头也都是进行字符串的拼接。

分用

接收方,层层分用,类似拆快递

1️⃣物理层

网卡收到 二进制的光 /电 /电磁波信号等二进制数据 ,然后进行解析,还原成 0101 这样的二进制序列 交给数据链路层
网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用,JavaEE,网络,tcp/ip,网络协议,java,java-ee


2️⃣数据链路层

根据传输过来的方式来交给对应的协议处理
数据链路层拿到数据报,交给以太网协议来进行解析,(如果数据是从以太网线传输过来的那么就会交给以太网协议来处理)。

数据帧头 /尾中会有一个消息类型,根据消息类型就可以知道用网络层的哪个协议了
然后数据链路层去掉数据帧头 /数据帧尾取出载荷再交给网络层

网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用,JavaEE,网络,tcp/ip,网络协议,java,java-ee

3️⃣网络层

IP数据报头中有一个字段,标识传输层用的哪个协议
网络层拿到数据报,根据相应的协议来分析数据,然后去掉报头,同时在做一些其他工作

然后取出载荷交给传输层
网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用,JavaEE,网络,tcp/ip,网络协议,java,java-ee

4️⃣传输层

每个要接收网络数据的程序都要关联上一个端口号

借助TCP报头中的重要属性,端口号来区分具体的应用程序
此处是由TCP协议解析,仍是去掉TCP报头取出载荷交给应用层

网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用,JavaEE,网络,tcp/ip,网络协议,java,java-ee

5️⃣应用层

交给对应的程序来解析应用层数据包,取出并使用相关数据。

此处是交给QQ这个程序来解析应用层数据包。


网络传输的实际情况

真是的网络环境十分复杂,数据的传输中间可能要经历很多节点 (交换机,路由器等设备) 进行转发,才能发送到目的地。

数据从发送方主机出发,一路可能会遇到交换机路由器等设备,最后传输到目的主机

发送方主机:将"数据" 从应用层封装到物理层,得到光或其他信号 ,然后这个信号可能会 顺着网线到达交换机或者路由器

信号如果到达交换机:交换机会进行分用, 从物理层分用到数据链路层,判断目的mac是否正确,然后进行重新封装到物理层 重新封装时封装到数据链路层时,会调整源mac与目的mac 。然后继续进行转发。

信号如果到达路由器:路由器也会进行分用, 从物理层分用到网络层,根据目的IP进行下一阶段的寻路操作,然后重新封装到物理层 ,继续进行转发。 重新封装时封装到数据链路层时,也会调整源mac与目的mac

接收方主机 一路从物理层分用到应用层 ,然后相应进程使用数据。


总结

以上就是今天要讲的内容,本文像大家介绍了网络通信的三大要素,以及常用的TCP/IP协议,以及传输过程中各层间的封装与分用。
开始网络编程的学习了,以后的内容只会越来越复杂了,大家加油啊!!!

路漫漫不止修身,也养性。文章来源地址https://www.toymoban.com/news/detail-520528.html

到了这里,关于网络编程1—— IP地址 + 端口号 +TCP/IP协议 + 协议分层的封装与应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络通信】探索UDP与TCP协议、IP地址和端口号的奥妙

    🌺 个人主页: Dawn黎明开始 🎀 系列专栏: 网络奇幻之旅 ⭐ 每日一句:往前走,朝着光 📢 欢迎大家:关注 🔍 +点赞 👍 +评论📝+收藏⭐️ 文章目录 📋前言 一.网络通信 1.1网络通信协议 1.2TCP/IP协议中的四个层次 二.UDP协议 2.1定义 2.2UDP连接的交互过程 三.TCP协议 3.1定义

    2024年02月05日
    浏览(48)
  • 【网络编程】网络通信基础——简述TCP/IP协议

    个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程的一点学习心得,欢迎大家在评论区交流讨论💌 ip地址简单来说就是用来描述网络上一个设备的所在位置。 端

    2024年02月04日
    浏览(62)
  • TCP IP网络编程(三) 地址族与数据序列

    网络地址 IP地址分为两类: IPv4 4字节地址族 IPv6 16字节地址族 IPv4和IPv6的差别主要是表示在IP地址所用的字节数,目前通用的地址族为IPv4,而IPv6是为了应对IP地址耗尽的问题而提出的标准,目前主要还是使用IPv4 IPv4标准的4字节IP地址分为网络地址和主机地址,且分为A、B、C、

    2024年02月10日
    浏览(85)
  • 【网络编程】TCP/IP协议(互联网的基石)

    (꒪ꇴ꒪ ),Hello我是 祐言QAQ 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍 快上🚘,一起学习,让我们成为一个强大的攻城狮! 送给自己和读者的一句鸡汤🤔: 集中起来的意志可以击穿顽石! 作者水平很有限,如果发现错误,请在评论区指

    2024年02月10日
    浏览(49)
  • 网络编程——深入理解TCP/IP协议——OSI模型和TCP/IP模型:构建网络通信的基石

    TCP/IP协议,即 传输控制协议/互联网协议 ,是一组用于在计算机网络中实现通信的协议。它由两个主要的协议组成:TCP(传输控制协议)和IP(互联网协议)。TCP负责确保数据的可靠传输,而IP则负责路由数据包以在网络中传递。TCP/IP协议簇还包含其他辅助协议,如UDP(用户数

    2024年02月14日
    浏览(57)
  • 网络编程day2——基于TCP/IP协议的网络通信

            计算机S                                                 计算机C      创建socket对象                                   创建socket对象      准备通信地址(自己的ip(非公网ip))      准备通信地址                                     (计算

    2024年02月10日
    浏览(68)
  • Linux 网络编程学习笔记——一、TCP/IP 协议族

    数据链路层实现了网卡接口的网络驱动程序,以处理数据在物理媒介(以太网、令牌环等)上的传输,不同的物理网络具有不同的电气特性,网络驱动程序隐藏了这些细节,为上层协议提供一个统一的接口。最常用的协议是 ARP(Address Resolve Protocol,地址解析协议)和 RARP(

    2024年02月02日
    浏览(73)
  • 【Java网络编程】OSI七层网络模型与TCP/IP协议簇

    1.1、OSI七层网络模型 OSI七层网络模型中,每层的功能如下: 应用层:人与计算机网络交互的窗口。 表示层:负责数据格式的封装,如加密、压缩、编解码等。 会话层:建立、终止、管理不同端间的会话连接。 传输层:提供端到端(两台机器)之间的传输机制,以及提供流

    2024年04月11日
    浏览(48)
  • 【Java EE初阶十五】网络编程TCP/IP协议(二)

            tcp的socket api和U大片的socket api差异很大,但是和前面所讲的文件操作很密切的联系         下面主要讲解两个关键的类:         1、ServerSocket:给服务器使用的类,使用这个类来绑定端口号         2、Socket:即会给服务器使用,又会给客户端使用;         

    2024年02月20日
    浏览(51)
  • TCP/IP网络编程(二) 套接字协议及其数据传输特性

    关于协议 如果相隔比较远的两人进行通话,必须先决定通话方式,如果一方选择电话,另一方也必须选择电话,否则接受不到消息。 总之,协议就是为了完成数据交换而定好的约定。 创建套接字 协议族 通过socket函数的第一个参数传递套接字中使用的协议分类信息,此协议

    2024年02月10日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包