当前位置: 首页 > news >正文

网店网站设计延吉网站建设公司

网店网站设计,延吉网站建设公司,网络营销方式并说明理由,上海企业网站排名优化一、源IP地址和目的IP地址 上次说到IP地址是为了是为了让信息正确的从原主机传送到目的主机#xff0c;而原IP地址和目的IP地址就是用于标识两个主机的#xff0c;既然叫做地址必然有着路径规划的作用#xff0c;而路径规划最重要的就是#xff0c;从哪来到哪去#xff0…一、源IP地址和目的IP地址 上次说到IP地址是为了是为了让信息正确的从原主机传送到目的主机而原IP地址和目的IP地址就是用于标识两个主机的既然叫做地址必然有着路径规划的作用而路径规划最重要的就是从哪来到哪去现在在哪下一步去哪 比如我要从山西北部骑行到江苏南京那么我的源地址就是山西目的地就是南京第一步山西-河北第二步河北-山东第三步山东-江苏 从上面我们看到的一个简单的路径规划可以看到出发地和目的地是不变的而当前位置和下一步的位置是一直在变化的而在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址。 在数据进行传输之前会先自顶向下贯穿网络协议栈完成数据的封装每一层会根据对应的协议添加报头其中在网络层封装的IP报头当中就涵盖了源IP地址和目的IP地址。而除了源IP地址和目的IP地址之外还有源MAC地址和目的MAC地址的概念。 二、理解源MAC地址和目的MAC地址 2.1MAC地址 MAC地址Media Access Control Address是一个用于识别网络设备的唯一标识符。每个网络设备如计算机、手机、路由器等都有一个独特的MAC地址。MAC地址通常是由48位二进制数字组成通常以十六进制表示。MAC地址由厂商在生产设备时分配分为两部分前24位是厂商标识符后24位是设备标识符。MAC地址在数据链路层OSI模型中的第二层使用用于在局域网中唯一标识设备。MAC地址的作用类似于身份证号码用于在网络中确定设备的身份和位置。 通常数据的传输是跨局域网的数据在传输过程中会经过若干个路由器 而在上篇博客中提到路由器是看作在TCP/IP五层(或四层)模型中的网络层。 而当数据在局域网中传输时就需要使用到数据链路层而在该层要使用的就是MAC地址。 2.2源MAC地址和目的MAC地址 当数据在局域网中传输时数据帧会包含发送者和接收者的MAC地址。网络设备根据目标MAC地址来决定是否接收该数据帧如果目标MAC地址与自身的MAC地址匹配设备就会接收并处理该数据帧。 上面提到的发送者和接收者的MAC地址其实就是源MAC地址和目的MAC地址。 源MAC地址和目的MAC地址是包含在链路层的报头当中的而MAC地址实际只在当前局域网内有效因此当数据跨网络到达另一个局域网时其源MAC地址和目的MAC地址就需要发生变化因此当数据达到路由器时路由器会将该数据当中链路层的报头去掉然后再重新封装一个报头此时该数据的源MAC地址和目的MAC地址就发生了变化。 这样做就可以让局域网技术不同的局域网之间经行通信就像上图一样即使局域网的技术不同一个是以太网一个是令牌环网但是数据是在进入局域网的时候才会添加数据链路层的报头如下图。 2.3数据传输的两套地址 一套是源IP地址和目的IP地址这两个地址在数据传输过程中基本是不会发生变化的存在一些特殊情况比如在数据传输过程中使用NET技术其源IP地址会发生变化但至少目的IP地址是不会变化的。另一套就是源MAC地址和目的MAC地址这两个地址是一直在发生变化的因为在数据传输的过程中路由器不断在进行解包和重新封装。 三、端口号 知道了消息如何在两台不同的主机之间传递那么当消息传递到另一台主机后如何知道该消息是发送给主机上哪一个应用呢 比如QQ之间进行通讯,可以看作是两个不同主机之间进程之间的通讯主机与主机之间通过ip地址不走错而进程带有一个端口号每个主机都有独一无二的IP而一台主机上的每个进程都有唯一的端口号。 端口号 (port) 是传输层协议的内容 端口号是一个2字节16位的整数; 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理; IP地址 端口号能够标识网络上的某一台主机的某一个进程; 一个端口号只能被一个进程占用 既然提到了进程我们都知道进程pid是用于标识唯一进程的那么他们有什么关系呢 虽然进程PID和端口号都是用于唯一标识某种资源进程或网络服务但它们之间并没有直接的关联。在实际的网络通信中操作系统会维护一个端口号与进程之间的映射关系使得特定端口号的数据能够被正确路由到相应的进程。通常网络服务启动时会绑定到一个特定的端口号并且在运行期间会监听该端口从而等待传入的连接请求或数据包。 传输层协议(TCP和UDP)的数据段中有两个端口号, 分别叫做源端口号和目的端口号. 就是在描述 数据是谁发的, 要发给谁; 综上 网络通信的本质就是进程间经行通信 四、浅谈UDP/TCP 在前面我们简单谈了在数据链路层MAC和传输层IP中十分重要的概念通过这两层我们已经能将数据从一台主机传输到另一台主机。但是数据的安全性无法保证而数据链路层就是用于为应用层提供可靠的、端到端的数据传输服务隐藏了网络通信的细节使得应用程序能够简单地进行数据交换而不需要关心底层网络的细节。传输层的核心协议包括TCP和UDP它们提供了不同级别的服务满足不同应用场景的需求。 3.1UDP UDPUser Datagram Protocol用户数据报协议是一种无连接的、不可靠的传输协议属于网络通信协议簇的一部分。与TCP不同UDP不提供可靠的数据传输和错误恢复机制而是专注于在网络上传输数据包提供简单的数据传输服务。 以下是UDP的一些特点 无连接性ConnectionlessUDP是一种无连接的协议发送数据之前不需要建立连接也不维护连接状态。 不可靠性UnreliableUDP不提供数据包的可靠传输数据包可能会丢失、重复或顺序错乱。 轻量级LightweightUDP的头部开销比TCP小不需要维护连接状态因此具有较低的延迟。 面向数据报Datagram-OrientedUDP以数据报为单位进行数据传输每个数据报独立于其他数据报。 不提供拥塞控制No Congestion ControlUDP不提供拥塞控制机制数据包可能会因为网络拥塞而丢失。 注意 上面的不可靠性只是一个相对的概念并不是说他不可靠就一定数据会出错。 UDP常用于对实时性要求较高、数据量较小、传输延迟较低的应用场景例如音频和视频流传输、DNS查询、实时游戏等。由于其简单和高效的特性UDP在一些特定的网络应用中具有重要的作用。比如我们经常玩的王者荣耀和原神都是udp链接 3.2TCP TCPTransmission Control Protocol是一种面向连接的、可靠的、基于字节流的传输层协议是互联网中最常用的协议之一。它提供了可靠的数据传输和错误恢复机制用于在网络中进行端到端的数据传输。 以下是TCP的一些主要特点 面向连接Connection-Oriented在数据传输之前TCP需要先建立连接然后再进行数据传输传输完成后再关闭连接。这种连接的建立和释放过程确保了数据的可靠传输。 可靠性ReliabilityTCP通过使用序号、确认和重传机制来确保数据的可靠传输。接收方会确认接收到的数据并在需要时请求重传丢失的数据从而保证数据的完整性和按序传输。 流量控制Flow ControlTCP使用滑动窗口机制进行流量控制确保发送方和接收方之间的数据传输速率匹配防止数据发送过快导致接收方缓冲区溢出。 拥塞控制Congestion ControlTCP使用拥塞窗口和拥塞避免机制来进行拥塞控制防止网络拥塞导致的数据丢失和传输延迟增加。 面向字节流Byte-OrientedTCP是一种面向字节流的协议它不保留消息的边界而是将数据视为一连串的字节流进行传输。 全双工通信Full Duplex CommunicationTCP连接是全双工的允许双方同时发送和接收数据。 TCP被广泛用于诸如网页浏览、文件传输、电子邮件和远程登录等应用中它的可靠性和稳定性使得它成为互联网通信的重要基础。  五、socket 在套接字编程中常常将IP地址和端口号结合起来表示一个通信的端点这种组合称为套接字地址。因此可以说IP地址和端口号一起构成了一个套接字地址。然而严格来说套接字是操作系统中的一个抽象概念用于表示网络通信的端点而IP地址和端口号只是套接字地址的组成部分用于确定通信的目的地或来源。因此套接字通常是由IP地址、端口号和协议类型如TCP或UDP一起确定的. 5.1socket编程接口 在C语言中使用套接字socket进行网络编程时常见的编程接口包括 socket(): 创建一个套接字返回套接字描述符。 int socket(int domain, int type, int protocol);domain: 地址族如 AF_INETIPv4或 AF_INET6IPv6。type: 套接字类型如 SOCK_STREAM流套接字TCP或 SOCK_DGRAM数据报套接字UDP。protocol: 协议类型通常为 0表示由系统自动选择。 bind(): 将套接字与特定的IP地址和端口号绑定。 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);sockfd: 套接字描述符。addr: 指向要绑定的 sockaddr 结构体的指针。addrlen: 地址结构体的大小。 listen(): 在服务器端开始监听连接请求。 int listen(int sockfd, int backlog);sockfd: 套接字描述符。backlog: 允许的连接等待队列的最大长度。 accept(): 接受客户端的连接请求并创建一个新的套接字用于与客户端进行通信。 int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);sockfd: 服务器套接字描述符。addr: 用于存储客户端地址信息的 sockaddr 结构体。addrlen: 指向存储客户端地址长度的变量的指针。 connect(): 连接到服务器。 int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); sockfd: 套接字描述符。addr: 服务器地址的 sockaddr 结构体指针。addrlen: 地址结构体的大小。 send() / recv(): 发送和接收数据。 ssize_t send(int sockfd, const void *buf, size_t len, int flags);sockfd: 套接字描述符。buf: 要发送的数据的缓冲区。len: 要发送的数据的字节数。flags: 发送标志通常为 0。 ssize_t recv(int sockfd, void *buf, size_t len, int flags);sockfd: 套接字描述符。buf: 接收数据的缓冲区。len: 缓冲区长度。flags: 接收标志通常为 0。 sendto() / recvfrom(): 用于在无连接的套接字上发送和接收数据报 ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen); sockfd: 套接字描述符。buf: 要发送的数据的缓冲区。len: 要发送的数据的字节数。flags: 发送标志通常为 0。dest_addr: 目标地址的 sockaddr 结构体指针用于指定数据发送的目标地址。addrlen: 目标地址结构体的大小。 ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);sockfd: 套接字描述符。buf: 接收数据的缓冲区。len: 缓冲区长度。flags: 接收标志通常为 0。src_addr: 用于存储发送方地址信息的 sockaddr 结构体指针。addrlen: 指向存储发送方地址长度的变量的指针。 close(): 关闭套接字。 int close(int sockfd);sockfd: 要关闭的套接字描述符 5.2sockaddr结构 socket API 是一层抽象的网络编程接口 , 适用于各种底层网络协议 , 如 IPv4 、 IPv6, 以及后面要讲的 UNIX Domain Socket. 然而 , 各种网络协议的地址格式并不相同 套接字不仅支持跨网络的进程间通信网络套接字还支持本地的进程间通信域间套接字。在进行跨网络通信时我们需要传递的端口号和IP地址而本地通信则不需要。网络的设计者想要把跨网络通信和本地通信进行大一统因此套接字提供了sockaddr_in结构体和sockaddr_un结构体其中sockaddr_in结构体是用于跨网络通信的网络套接字而sockaddr_un结构体是用于本地通信的域间套接字。 为了让套接字的网络通信和本地通信能够使用同一套函数接口于是就出现了sockeaddr结构体该结构体与sockaddr_in和sockaddr_un的结构都不相同但这三个结构体头部的16个比特位都是一样的这个字段叫做协议家族。 ​  最上面那个是表示是那种套件字.sin_family然后是端口号(.sin_port)和IP地址(.sin_addr) 此时当我们在传递在传参时就不用传入sockeaddr_in或sockeaddr_un这样的结构体而统一传入sockeaddr这样的结构体。在设置参数时就可以通过设置协议家族这个字段来表明我们是要进行网络通信还是本地通信在这些API内部就可以提取sockeaddr结构头部的16位进行识别如果前16为地址类型是AD_INET就是网络间通信如果地址类型是AD_UNIX就是本地间通信。如上我们就通过通用sockaddr结构将套接字网络通信和本地通信的参数类型进行了统一。 注意  IPv4和IPv6的地址格式定义在netinet/in.h中,IPv4地址用sockaddr_in结构体表示,包括16位地址类型, 16 位端口号和32位IP地址. IPv4、IPv6地址类型分别定义为常数AF_INET、AF_INET6. 这样,只要取得某种sockaddr结构体的首地址, 不需要知道具体是哪种类型的sockaddr结构体,就可以根据地址类型字段确定结构体中的内容. socket API可以都用struct sockaddr *类型表示, 在使用的时候需要强制转化成sockaddr_in; 这样的好处是程序的通用性, 可以接收IPv4, IPv6, 以及UNIX Domain Socket各种类型的sockaddr结构体指针做为 参数;  我们可以包含如下四个头文件查看或使用sockaddr、sockaddr_in、in_addr的相关信息 #include sys/types.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h sockaddr 结构 ​ sockaddr_in 结构 ​ 虽然 socket api 的接口是 sockaddr, 但是我们真正在基于 IPv4 编程时 , 使用的数据结构是 sockaddr_in; 这个结构里主要有三部分信息: 地址类型 , 端口号 , IP 地址 in_addr结构 ​ in_addr用来表示一个IPv4的IP地址. 其实就是一个32位的整数。 在这个里面我们并没有看到sin_family这个部分事实上这个就是第二个图片240那行那个在 sockaddr_in 结构体中sin_family 是 __SOCKADDR_COMMON(sin_) 的一部分。这个设计是为了确保不同的套接字地址结构例如IPv4、IPv6等在内部布局上是一致的以便于通用的套接字地址处理。 ​ ##可以把位于它两边的符号合成一个符号。它允许宏定义从分离的文本片段创建标识符 注 这样的连接必须产生一个合法的标识符。否则其结果就是未定义的。 所以上面直接被替换成sin_family   六、网络字节序 我们都知道不同的计算机在内存存储中存在大小端问题 大端模式 数据的高字节内容保存在内存的低地址处数据的低字节内容保存在内存的高地址处。小端模式 数据的高字节内容保存在内存的高地址处数据的低字节内容保存在内存的低地址处。 磁盘文件中的多字节数据相对于文件中的偏 移地址也有大端小端之分, 网络数据流同样有大端小端之分. 那么如何定义网络数据流的地址呢 发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出; 接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存; 因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址. TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节. 不管这台主机是大端机还是小端机, 都会按照这个TCP/IP规定的网络字节序来发送/接收数据; 如果当前发送主机是小端, 就需要先将数据转成大端; 否则就忽略, 直接发送即可; ​ 为使网络程序具有可移植性 , 使同样的 C 代码在大端和小端计算机上编译后都能正常运行 , 可以调用以下库函数做网络字节序和主机字节序的转换。 ​ 这些函数名很好记,h表示host,n表示network,l表示32位长整数,s表示16位短整数。 例如htonl表示将32位的长整数从主机字节序转换为网络字节序,例如将IP地址转换后准备发送。 如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回 ; 如果主机是大端字节序,这些 函数不做转换,将参数原封不动地返回
http://www.pierceye.com/news/13694/

相关文章:

  • 企业网站收费标准vue做移动端网站与pc端有什么区别
  • 做空调的网站网站底部设计源码
  • 网站如何换域名灰色词排名上首页
  • 更改网站备案负责人教育门户网站建设
  • 专业网站建设 公司哪家好常州网站建设最易
  • 网站的页面结构网站建设渠道合作
  • 直播课网站怎样做的法国vps 安装wordpress
  • 网站建设需求信息服饰的网站建设
  • 威海外贸网站建设联系方式南京我爱我家网站建设新村二手房
  • 杭州做网站比较好的公司下列哪个软件属于网页制作软件
  • 西安做企业网站哪家做的好航运网站建设计划书
  • tp3企业网站开发百度云蜂箱尺寸与制作图片
  • 图片存放网站做链接做评测好的视频网站有哪些
  • 如何做网站链接分享朋友圈做app模板网站有哪些
  • 网站建设策划书心得做网站要学会那些
  • 建网站能赚钱吗赚多少图片识别
  • 石家庄专业做网站网页设计思路说明200字
  • html5开发wap网站flash网站效果
  • 简易网站建设维护顺企网官网
  • 知名的产品设计网站东莞公司网站开发
  • 做网站用dw还是vs帮做简历哪个网站好
  • 潍坊做网站公司漯河市建设监理协会网站
  • 学校网站的建设目标是什么意思广州 创意的网站设计
  • 怎么做网站360图片链接众创空间网站建设
  • 网站用户管理体系国网法治建设网站
  • 中国服务器在外国网站有哪些郑州博大泌尿外科医院
  • zhi做网站电影网站模板源代码
  • 咖啡网站建设做哪种网站赚钱
  • h5case是什么网站wordpress 弹幕插件
  • 网站首图怎么做wordpress型营销