当前位置: 首页 > news >正文 顺德品牌网站建设咨询wish跨境电商平台官网 news 2025/10/29 0:00:25 顺德品牌网站建设咨询,wish跨境电商平台官网,做商城网站外包,支付宝网站开发目录 一、理解源IP地址和目的IP地址 二、端口号 1. 为什么要有端口号 2. 理解端口号 3. 源端口号和目的端口号 三、初步了解TCP协议和UDP协议 1. 初步认识TCP协议 2. 初步认识UDP协议 3. 可靠传输与不可靠传输 四、网络字节序 1. 网络字节序的概念 2. 如何形成网络…目录 一、理解源IP地址和目的IP地址 二、端口号 1. 为什么要有端口号 2. 理解端口号 3. 源端口号和目的端口号 三、初步了解TCP协议和UDP协议 1. 初步认识TCP协议 2. 初步认识UDP协议 3. 可靠传输与不可靠传输 四、网络字节序 1. 网络字节序的概念 2. 如何形成网络字节序 2.1 大小端转化 一、理解源IP地址和目的IP地址 源IP和目的IP在上一章网络基础中就已经有所讲解这里就简单的介绍一下。在IP数据包头部中包括两个IP地址分别是源IP地址和目的IP地址。源IP地址就是发送数据的主机的IP地址目的IP地址就是最终要接收这份数据的主机的IP地址。 在网络中发送数据时必须要有源IP和目的IP这两个IP地址用于标识这份数据从哪儿来要到哪儿去。这就好比你去旅游时必须要有一个出发地和目的地否则这趟旅游就无法开始。 二、端口号 1. 为什么要有端口号 要了解端口号首先要建立如下一个概念 网络中两台主机通信时真正需要通信的并不是主机而是这两台主机中的应用层的程序需要通信需要通过传输的这份数据来实现某种业务。所以将数据从A主机传输到B主机并不是目的而是手段。让这两台主机上的程序获取这份数据执行某项业务才是目的。 我们知道在一台主机上可能存在数十上百个进程而这份数据如何从这大量的进程中分辨出它应该传给谁呢解决方案很简单既然数据在传输过程中有唯一的IP来标识这份传入的数据的来源和目的地就也可以通过一个唯一的数据来标识某个进程。 因此在网络中为了更好的表示一台主机上的进程的唯一性就采用了端口号port来标识服务器进程和客户端进程的唯一性。 2. 理解端口号 端口号和ip地址不同ip地址是网络层协议的内容而端口号port是传输层协议的内容。 端口号是一个2字节即16位的整数。端口号用于标识一个进程告诉OS当前的这个数据要交给哪一个进程来处理。 在网络中ip地址端口号就能够唯一标识网络上的某一台主机的某一个进程。 一个端口号只能被一个进程占用即一个端口号对应一个进程。 通过上面的ip地址标识主机和端口号标识进程的内容我们就应该意识到网络通信的本质其实就是“进程间通信”。 要进行进程间通信就必须要有一份能够让这两个进程同时看到的共享资源这份共享资源就是网络资源。 同时上面也说了端口号是一个2字节的整数如果所有主机中的进程都共用同一套端口号就势必会出现端口号不足的情况。因此不同主机其实都拥有一套单独的端口号即不同主机上的端口号是可以相同的。因为ip地址就已经保证了该主机全网唯一并不准确那么端口号是不是全网唯一就已经不重要了只需要保证有端口号和同一台主机下的端口号不重复即可。 上文中说网络通信的本质就是进程间通信而端口号和ip地址分别属于传输层协议和网络层协议而传输层和网络层又是属于OS的。同时我们也知道在OS中一个进程的唯一性可以用进程pid来标识。既然如此那为什么这里要单独用端口号来标识进程唯一性而不采用进程pid来标识呢原因主要有以下三个 1系统就是系统网络就是网络。如果采用进程pid充当端口号就会导致系统与网络的强耦合。为了避免这一情况就需要将系统与网络解耦即网络单独用端口号来标识进程唯一性。 2数据在网络中传输时要求数据能够快速准确的找到对应的服务器进程。这就要求ip地址端口号是不能随意改变的。而进程pid在进程重启后都会重新随机生成增加了数据找到对应服务器进程的成本。 3不是所有的进程都需要提供网络服务和请求但是所有进程都需要进程pid。例如我们的电脑中的某些单机游戏从下载下来后就不会再进行联网操作此时该进程就不需要提供网络服务也就不需要端口号。 此时大家可能还会有一个问题。端口号是网络中用来标识进程唯一性的而进程是由OS来管理的。那底层OS是如何根据这个端口号来找到对应进程的呢我们知道在OS中每个进程都有一个进程pcb是一个结构体。而端口号是一个2字节的整数所以这个问题现在就转化为了如何通过一个16位的整数找到一个结构体。解决方案其实就是hash。建立一个kv模型的hash表key值就是端口号value则是对应进程的pcb。通过hash映射的方式就可以通过端口号找到进程了。 总结起来要理解端口号就要理解如下四个概念 1网络通信的本质就是进程间通信。通过网络资源这一共享资源进行通信 2所有主机上都有一套独立的端口号这就表示不同主机的端口号是可以相同的 3端口号和进程pid都是用来标识进程唯一性的但端口号是用于网络中的而进程pid则是用于OS中的 4OS通过hash映射的方式用端口号找到对应的进程 注意上文中一直在说一个端口号标识唯一一个进程但是并没有说一个进程只能对应一个端口号。在实际中一个进程是可以绑定多个端口号的。大家应该听过“开后门”的事情。就是在网上有些人可能说某个程序员给别人写了一个程序但这个程序员留了一个后门在这个买程序的人拿了程序没给钱的时候这个程序员就通过这个后门将他交付的程序中的数据全部删除了。这里的这个“后门”其实就是指的端口号。即他交付的这个程序绑定了多个端口号一些端口号是给买程序的人用的而另一些端口号他则没有告诉用户只要这些预留的端口号没被用户发现并清除那么这个程序员就随时都可以通过这些端口号进入程序内部修改数据。 3. 源端口号和目的端口号 和ip地址存在源IP和目的IP两个IP地址一样传输层协议的数据段中的端口号也存在“源端口号”和“目的端口号”两个端口号分别用于标识从哪里来和到哪里去。 注意在传输数据的过程中不仅要将对方需要的数据传过去还需要将自己的ip地址和端口号传过去。因为数据传输是相互的对方也可能需要反馈数据。 此时有人可能就会疑惑了既然接收方需要接收发送方的ip和port以便于返回数据那发送方在最开始的时候是如何知道接收方的ip和port的呢这其实因为我们所用的程序并不是由我们写的而是由给我们提供程序的公司写的。这些程序发送数据时需要发送给给特定的服务器而这些服务器的ip和端口号早已经在程序内被提前写好了不需要用户操心。 三、初步了解TCP协议和UDP协议 大家知道在网络中通过协议分层分为了5层其中传输层和网络层属于OS数据链路层是驱动相关的内容物理层是硬件相关的内容。这四层都已经有对应的协议规定好了不需要我们来操作。所以在网络编程中我们所要做的基本都是在应用层进行操作。而数据传输是自顶而下的这也就导致如果我们想在应用层操作就势必需要使用系统调用接口与传输层建立关系。 在传输层中主流的协议是TCP协议还有一个使用比较少的协议即UDP协议。在这里因为大家知识储量不够的原因还不能详细讲解这两个协议但可以建立一个对TCP协议和UDP协议的初步认识。 1. 初步认识TCP协议 TCP协议全称为Transmission Control Protocol即传输控制协议。主要包括以下四个特性 1是传输层协议 2有连接 3可靠传输 4面向字节流 第一点是传输层协议这个不比多说TCP协议就是一个应用于传输层的协议。 第二点有连接。这里的有连接指的是在正式通信之间通信双方要先建立连接。这就好比我们打电话只有当对方接听了电话你们之间建立了一个沟通渠道后才可以开始通话。如果对方没有接电话就是建立连接失败。 第三点可靠传输。数据在网络传输中是可能出现各种问题的例如数据丢失、数据由于某些原因多发了一份、由于网络抖动导致数据发送失败等问题这些问题就被称为“不可靠”。而这里的可靠传输就是指TCP协议中会有对应的可靠性方案来解决这些问题。至于解决这些不可靠的方案和过程在应用层是感知不到的因为用户并不关心这些用户只关心数据是否传输成功。 第四点面向字节流。对于流大家可能并不陌生就是数据从一个地方传输到另一个地方。但是字节流大家应该并不了解。有人可能说自己以前学过文件读取学过管道对字节流有了解。确实大家确实有了解但这个了解也仅仅停留在知道有个东西叫做“面向字节流”至于这个它是如何运行的它会带来什么后果、它的数据是怎么提取的等等问题大家并不清楚。当然在这里也没办法完全将面向字节流讲清楚大家现在只需要知道TCP协议的一个特性就是面向字节流即可。 2. 初步认识UDP协议 UDP协议全称为User Datagram Protocol即用户数据报协议。主要包括如下4个特性 1是传输层协议 2无连接 3不可靠传输 4面向数据报 第一点是传输层协议不必多说。 第二点无连接。无连接指的是发送数据时两台主机直接不用建立联系。这就好比你的朋友给你的邮箱发信息他只需要知道你的邮箱就可以给你发信息不必等你响应。 第三点不可靠传输。TCP协议可能会遇到的如数据丢失、网络抖动等问题UDP协议同样会遇到。但不同的是TCP协议中有对应的可靠传输方案去解决而UDP中则没有解决方案。 第四点面向数据报。要理解面向数据报首先就要理解面向字节流将这两种方式进行对比后才能更清晰的认识到什么是面向数据报。这里因为大家对什么是面向数据流都不太理解就不过多赘述。 大家可以通过下图来帮助记忆TCP协议和UDP协议的区别 3. 可靠传输与不可靠传输 TCP协议是可靠传输UDP协议则是不可靠传输。此时有人可能就就会疑惑既然UDP协议无法保证数据传输的安全那为什么UDP协议还没有被淘汰呢大家要注意这里的可靠与不可靠并没有褒贬之意而是两个中性词。 可靠传输固然可以保护数据传输的安全但是那也是有代价的。数据在网络中可能会遇到各种各样的问题TCP协议为了解决或缓解这些问题就势必需要进行很多的处理这也就导致TCP协议使用起来往往是比较复杂的。这个复杂就主要体现在维护和编码上。TCP协议的代码比较复杂维护难度比较高。同时在使用时也可能需要程序员根据需求去自行制定解决问题的方案编码上也比较困难。 UDP协议因为是不可靠传输所以不必去考虑如何保护数据传输的安全。在维护和使用上都比较简单。 虽然TCP协议是目前传输层中最主流的协议但在某些场景下也是可以使用UDP协议的。比如我们经常看的直播它允许数据出现一定的丢包。例如调整清晰度其实就是允许传输的数据丢失一部分。这类场景就可以采用UDP协议。但是在银行系统这种数据非常重要的情况下就需要使用TCP协议对数据传输进行维护。 因此TCP协议和UDP协议的使用仁者见仁智者见智选择合适的场景去使用即可。 四、网络字节序 1. 网络字节序的概念 网络字节序其实就是TCP/IP协议中规定好的一种数据表示格式。那么它有什么用呢先来看下面的问题。 在以前大家都了解过计算机中存储数据时是有大小端之分。 在同一台主机中传输数据时因为大小端统一所以无需我们操心。但是在网络中传输数据时是在两台不同的主机之间传输这也就导致可能出现“大端机数据传给小端机”或“小端机数据传给大端机”的情况 当大端机的数据传给小端机时小端机就会以小端的方式接收和识别数据反之同理。此时就会导致读取到的数据是反的。有人可能会说出现这种情况的时候直接将数据逆序不就可以了么。但是要知道在这里的问题并不是逆序数据逆序很容易解决这里最大的问题是接收方如何知道发送过来的数据是大端数据还是小端数据。 为了解决这一问题在TCP/IP协议中有了如下规定 在网络中传输数据时必须传输大端数据。即网络数据流采用大端字节序即低地址高字节。 无论这台主机是大端机还是小端机都会按照TCP/IP协议规定的网络字节序来发送/接收数据。如果当前发送主机是小端就需要先将数据转成大端否则就忽略。 再来看数据发送时的数据地址情况。 发送主机通常将发送到缓冲区中的数据按内存地址从低到高的顺序发出。因此接收主机在把从网络上接收到的字节依次保存在接收缓冲区中时也是按内存地址从低到高的顺序保存的。 由此网络数据流的地址是这样规定的先发出的数据是低地址后发出的数据是高地址。 大家可能对大端和小端有点不清楚这里举一个例子。假设现在有0x12345678一串数字将这串数字写到从0x0000开头的内存中。形式如下图所示 注意这里的高字节指的是位数而不是数字大小。 因此网络字节序其实就是用于保证不同主机之间可以不受大小端的影响而自由通信。 2. 如何形成网络字节序 网络字节序要求在发送数据的主机中能够识别本台主机上的数据是大端还是小端如果是小端就要进行转化。而接收数据的主机则需要能够将获取到的数据转化为与自己匹配的大端或小端。这个工作是非常繁琐复杂的如果全部交由程序员来实现无疑会比较耗时麻烦并且不同程序员的实现方式不同也可能出现兼容性的问题。 2.1 大小端转化 为了减轻程序员的负担同时使网络程序具有可移植性让同样的C代码在大端或小端的主机是都能够正常运行OS中就提供了如下的几个函数来做网络字节序和主机字节序的转换 这四个函数就可以用于网络字节序和主机字节序的互相转化。 这些函数的名字也很好理解。h表示host即主机n表示network即网络l表示long即32位长整数s表示short即16位短整数。 上面的htonl就是将32位长整数的主机字节序转换为网络字节序htons就表示将16位短整数的主机字节序转换为网络字节序ntohl和ntohs则是分别将32位长整数或16位短整数的网络字节序转换为主机字节序。 如果主机是小端字节序这些函数将参数做相应的大小端转换然后返回。 如果主机是大端字节序这些函数不做转换将参数原封不动地返回。 文章转载自: http://www.morning.rshkh.cn.gov.cn.rshkh.cn http://www.morning.ybgpk.cn.gov.cn.ybgpk.cn http://www.morning.tyjp.cn.gov.cn.tyjp.cn http://www.morning.npmcf.cn.gov.cn.npmcf.cn http://www.morning.blxlf.cn.gov.cn.blxlf.cn http://www.morning.dqrpz.cn.gov.cn.dqrpz.cn http://www.morning.ryxyz.cn.gov.cn.ryxyz.cn http://www.morning.gycyt.cn.gov.cn.gycyt.cn http://www.morning.yfnjk.cn.gov.cn.yfnjk.cn http://www.morning.wkxsy.cn.gov.cn.wkxsy.cn http://www.morning.gfqj.cn.gov.cn.gfqj.cn http://www.morning.nmhpq.cn.gov.cn.nmhpq.cn http://www.morning.lwxsy.cn.gov.cn.lwxsy.cn http://www.morning.rfgkf.cn.gov.cn.rfgkf.cn http://www.morning.pcshb.cn.gov.cn.pcshb.cn http://www.morning.xrwtk.cn.gov.cn.xrwtk.cn http://www.morning.hjbrd.cn.gov.cn.hjbrd.cn http://www.morning.plhhd.cn.gov.cn.plhhd.cn http://www.morning.srcth.cn.gov.cn.srcth.cn http://www.morning.jwgnn.cn.gov.cn.jwgnn.cn http://www.morning.wfjrl.cn.gov.cn.wfjrl.cn http://www.morning.ljpqy.cn.gov.cn.ljpqy.cn http://www.morning.wpkr.cn.gov.cn.wpkr.cn http://www.morning.mqffm.cn.gov.cn.mqffm.cn http://www.morning.rszwc.cn.gov.cn.rszwc.cn http://www.morning.kxxld.cn.gov.cn.kxxld.cn http://www.morning.jcxgr.cn.gov.cn.jcxgr.cn http://www.morning.hlppp.cn.gov.cn.hlppp.cn http://www.morning.sqyjh.cn.gov.cn.sqyjh.cn http://www.morning.jlmrx.cn.gov.cn.jlmrx.cn http://www.morning.qnjcx.cn.gov.cn.qnjcx.cn http://www.morning.hmsong.com.gov.cn.hmsong.com http://www.morning.mtrz.cn.gov.cn.mtrz.cn http://www.morning.grxyx.cn.gov.cn.grxyx.cn http://www.morning.fxjnn.cn.gov.cn.fxjnn.cn http://www.morning.qsbcg.cn.gov.cn.qsbcg.cn http://www.morning.rwzqn.cn.gov.cn.rwzqn.cn http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn http://www.morning.rqfzp.cn.gov.cn.rqfzp.cn http://www.morning.trkl.cn.gov.cn.trkl.cn http://www.morning.xdwcg.cn.gov.cn.xdwcg.cn http://www.morning.ghxsn.cn.gov.cn.ghxsn.cn http://www.morning.hgfxg.cn.gov.cn.hgfxg.cn http://www.morning.qpnmd.cn.gov.cn.qpnmd.cn http://www.morning.rjcqb.cn.gov.cn.rjcqb.cn http://www.morning.yknsr.cn.gov.cn.yknsr.cn http://www.morning.yjmns.cn.gov.cn.yjmns.cn http://www.morning.zpqlf.cn.gov.cn.zpqlf.cn http://www.morning.sqgsx.cn.gov.cn.sqgsx.cn http://www.morning.pmbcr.cn.gov.cn.pmbcr.cn http://www.morning.xtyyg.cn.gov.cn.xtyyg.cn http://www.morning.lrybz.cn.gov.cn.lrybz.cn http://www.morning.tslfz.cn.gov.cn.tslfz.cn http://www.morning.fqcdh.cn.gov.cn.fqcdh.cn http://www.morning.mbzlg.cn.gov.cn.mbzlg.cn http://www.morning.zxfr.cn.gov.cn.zxfr.cn http://www.morning.nba1on1.com.gov.cn.nba1on1.com http://www.morning.jfjfk.cn.gov.cn.jfjfk.cn http://www.morning.tgts.cn.gov.cn.tgts.cn http://www.morning.bnlch.cn.gov.cn.bnlch.cn http://www.morning.sxfnf.cn.gov.cn.sxfnf.cn http://www.morning.ymsdr.cn.gov.cn.ymsdr.cn http://www.morning.txhls.cn.gov.cn.txhls.cn http://www.morning.jcypk.cn.gov.cn.jcypk.cn http://www.morning.nyqb.cn.gov.cn.nyqb.cn http://www.morning.fykqh.cn.gov.cn.fykqh.cn http://www.morning.drrt.cn.gov.cn.drrt.cn http://www.morning.jncxr.cn.gov.cn.jncxr.cn http://www.morning.kmldm.cn.gov.cn.kmldm.cn http://www.morning.rgxll.cn.gov.cn.rgxll.cn http://www.morning.lwrcg.cn.gov.cn.lwrcg.cn http://www.morning.ysskn.cn.gov.cn.ysskn.cn http://www.morning.gynlc.cn.gov.cn.gynlc.cn http://www.morning.qieistand.com.gov.cn.qieistand.com http://www.morning.rbnnq.cn.gov.cn.rbnnq.cn http://www.morning.ntcmrn.cn.gov.cn.ntcmrn.cn http://www.morning.wmfmj.cn.gov.cn.wmfmj.cn http://www.morning.rwzmz.cn.gov.cn.rwzmz.cn http://www.morning.mzskr.cn.gov.cn.mzskr.cn http://www.morning.tntqr.cn.gov.cn.tntqr.cn 查看全文 http://www.tj-hxxt.cn/news/258015.html 相关文章: 深圳农产品网站制作phpcmsv9手机网站开发 枝江企业网站php商务网站开发代码 学做网站难吗wordpress 自己写js 名聚优品 一家只做正品的网站wordpress视频防止下载文件 没有固定ip做网站建设部人事考试网站官网 阿里云建站网站前台设计模板 入侵织梦网站山东城乡建设厅网站 企业网站的建设与维护是什么网站当前位置怎么做 网站建设支付做宣传海报网站 台州市建设施工图审图网站wordpress 文本小工具添加 网站开发中网页打印哎呀哎呀视频在线观看 深圳龙华区住房和建设局网站盐城建设厅网站设计备案 中小企业建站服务做网站用什么后缀好 培训餐饮网站建设做好网站建设工作总结 网站后台管理系统 静态页面商标交易网 微信开放平台怎么解除广州搜索引擎优化方法 南翔企业网站开发建设wordpress同类软件 自己建网站北京网站优化效果怎样 南江县规划和建设局网站织梦门户网站模板 服装网站设计模板开一家公司最低注册资金 重庆网站搭建欧美做的爱爱网站 学习网站后台维护做汽车网站费用 奉贤专业网站建设移动4G网站建设 上海网站备案拍照地点北仑做网站 程序员自己做网站怎么赚钱深圳宝安区怎么样 海沧做网站域名历史价格查询 宁波网站推广外包服务wordpress右键菜单插件 扫黄打非网站建设黑龙江龙采做网站如何 iis6无法新建网站wordpress怎么添加icp 做免费网站教程国vs免费网站建设 godaddy