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

破解空间网站网站企业快速备案

破解空间网站,网站企业快速备案,wordpress如何导出,广告设计专业学校目录 一、网络协议 1.网络协议概念 2.协议分层 3.OSI七层模型和TCP/IP五层#xff08;或四层#xff09;模型 4.为什么要有网络协议#xff1f; 5.网络通信协议的原理 二、网络传输的基本流程 1.局域网的网络传输流程 1.MAC地址 2.局域网通信原理#xff08;以太网…目录 一、网络协议 1.网络协议概念 2.协议分层 3.OSI七层模型和TCP/IP五层或四层模型 4.为什么要有网络协议 5.网络通信协议的原理 二、网络传输的基本流程 1.局域网的网络传输流程 1.MAC地址 2.局域网通信原理以太网为例 3.协议的封装和解包、分用 2. 跨网络传输流程图 1.IP地址 2.跨网络通信原理 ​编辑3.IP地址对比MAC地址 三、Socket编程预备知识 1.端口号Port 2.端口号和进程ID的区别 3.理解Socket 4.认识传输层中的典型协议 5.网络字节序 6.Socket编程接口 (1)创建 socket 文件描述符(TCP/UDP, 客户端 服务器) (2)绑定端口号 (TCP/UDP, 服务器) (3)开始监听socket (TCP, 服务器) (4)接收请求 (TCP, 服务器) (5)建立连接 (TCP, 客户端) (6)接收数据(UDP,服务端) (7)发送数据sendto 7.关于sockaddr结构体 (1)struct sockaddr_in (2)struct sockaddr_un 一、网络协议 1.网络协议概念 计算机之间的传输媒介是光信号和电信号通过“频率”和“强弱”表示0或1。如果想要传递各种各样的信息就要约定好双方通信信息的数据格式。 为了让不同厂商生产的计算机可以相互通畅地通信就需要约定一个共同的通信标准所有人都要遵守这个共同的通信标准就是网络协议。 2.协议分层 协议本质是一个软件协议分层是为了实现解耦合让软件维护成本更低。 例如下图将协议分层为两层语言层和通信设备层。以打电话为例逻辑上是两个人在直接通信但实际上是需要通过电话来传输信息电话机之间遵循的时电话间之间的协议人与人之间遵循的是汉语协议。 如果将电话机通信改为无线电通信那么通信设备层之间遵循的就是无线电协议如果将汉语改为英语那么语言层之间遵循的就是英语协议。 实际上的网络通信协议设计地更复杂需要分为更多层。 3.OSI七层模型和TCP/IP五层或四层模型 OSI七层模型是开放式系统互联参考模型 是一个逻辑上的定义和规范。将网络通信协议从逻辑上分为了7层但是实际实现时OSI七层模型比较复杂冗余所以真正采用的是TCP/IP五层或四层模型。TCP/IP五层或四层模型将OSI七层模型中的应用层、表示层和会话层合为一个层。又由于物理层考虑的比较少所以TCP/IP模型也叫做四层模型。 TCP/IP五层或四层模型是一组协议的代名词它其中还包括许多其他协议共同组成了TCP/IP协议簇。 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决 定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测 到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太 网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规 划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标 主机.应用层: 负责应用程序间沟通如简单电子邮件传输SMTP、文件传输协议FTP、网络远程访问 协议Telnet等. 我们的网络编程主要就是针对应用层 4.为什么要有网络协议 首先即使是一个计算机其内部也存在各种协议例如其他设备和内存之间的通信协议、其他设备和磁盘的通信协议等。而网络协议是为了解决计算机之间的通信其存在的本质原因是通信距离变远了。 例如主机A和主机B通信但是距离较远就需要考虑许多问题 主机A将数据传输给主机B首先要将数据传输给路由器怎么传输给路由器网络上存在大量其他主机如何定位并找到主机B数据传输过程中丢失了怎么办主机A将数据传输给主机B不是目的只是手段主机B接收到数据后如何处理使用 因此设计了TCP/IP通信协议其本质是一种解决方案。 5.网络通信协议的原理 在TCP/IP通信协议分层中其中传输层为TCP网络层为IP这两层都是在操作系统中实现C/C语言实现的所以对于相同的数据结构两台计算机都能认识就完成了通信。 所以通信协议的本质是通信双方都认识结构化的数据类型 二、网络传输的基本流程 1.局域网的网络传输流程 1.MAC地址 每台主机在局域网中都要有一个唯一标识来保证主机的唯一性即MAC地址 MAC地址用来识别数据链路层中相连的节点长度为48位6个字节一般使用16进制数字加上冒号的形式来表示例如08:00:27:03:fb:19 MAC地址在网卡出厂时就确定了不可修改所以MAC地址是唯一的 虚拟机中的MAC地址不是真实的MAC地址可能会与已存在的MAC地址发生冲突 2.局域网通信原理以太网为例 两台计算机在同一个以太网下就可以直接通信。 如果同一个以太网下有多台主机主机A给主机B传输数据其他所有主机包括主机B都会接收到数据但是这样很明显不可以。所以每个主机都会有一个MAC地址主机A在给主机B传输数据时会带上主机B的MAC地址其他主机收到数据时对比MAC地址不是自己的MAC地址就会丢弃数据是自己的MAC地址才会接收处理数据。 以太网通信特点 以太网中任何时刻只允许一台主机向网络中发送数据如果有多台主机同时向网络中发送数据就会有数据干扰称为数据碰撞主机在向网络中发送数据之前要先进行碰撞检测和碰撞避免没有交换机的情况下以太网就是一个碰撞域  3.协议的封装和解包、分用 两台主机在以太网中通信 每一层都有不同的协议所以在进行数据传输时每一层都要进行封装和解包。所谓报头就是对应协议层的结构体字段除了报头剩下的叫做有效载荷报头有效载荷报文。 例如主机1给主机2发送数据“你好”其数据传输过程以及封装和解包的过程如下 主机1中数据包从应用层到网卡层的过程叫做封装封装就是每层协议为数据包加上一个数据首部包含了诸如首部有多长、有效载荷有多长、上层协议是什么等信息。 主机2中数据包从网卡层到应用层的过程叫做解包由于每层可能会有多种协议将解包后的数据包交给哪一个协议的过程叫做分用。解包就是协议去除掉数据包相应的首部数据再将数据包交给上层协议处理。 综上协议对于数据包的封装和解包的过程十分类似入栈和出栈所以协议又叫做协议栈。 2. 跨网络传输流程图 1.IP地址 IP地址是存在于IP协议中的用于标识网络中不同主机的地址。IP协议有两个版本IPv4和IPv6。 对于IPv4来说IP地址是一个4字节32位的整数或者通常采用“点分十进制”的字符串表示IP地址例如 192.168.0.1 点号分割的每一个数字表示一个字节范围是0 - 255 2.跨网络通信原理 路由器连接着两个网卡即路由器连接着两个不同的局域网 用户A发送的报文经过主机1的网络层协议封装后发现目标IP地址不是当前局域网的即报文不是发送给主机1所在的局域网的所以要将报文继续向下封装后交给路由器再由路由器解包到达网络层发现目标IP地址是自己所连接局域网中的IP地址所以路由器重新封装报文到达网卡层再由路由器的网卡层传输给主机2的网卡层主机2再进行相应的解包完成跨网络通信。 所以网络层也叫IP层网络层之上包括网络层不管是局域网通信还是跨网络通信它们的报文都是一样的。因此使用IP地址可以屏蔽底层网络的差异提供了网络虚拟层让所有的网络都是IP网络 因此无论是使用无线网、数据网或者其他网络它们都可以连接网络相互通信。 3.IP地址对比MAC地址 IP地址在跨网络中标识主机设备的唯一性MAC地址只在局域网中标识主机设备的唯一性 IP地址在整个路由过程中一直不变MAC地址一直在变 IP地址是一种长远目标MAC地址是下一阶段目标 IP地址是路径选择的重要依据MAC地址是局域网转发的重要依据 如下图IP地址一直不变而MAC地址要经过许多路由器而一直在变化 三、Socket编程预备知识 Socket编程是传输层供给应用层的编程接口是应用层与传输层之间的桥梁。 使用Socket编程可以开发客户机和服务器应用程序这些程序能够在本地网络上进行通信也可通过Internet在全球范围内通信。 1.端口号Port 主机之间通过网络完成数据传输不是目的真正的目的是要将数据交给系统中的进程。进程是人在系统中的代表只要把数据交给进程就相当于人拿到了数据。 系统中存在许多进程数据传输给目标主机后需要再将数据传给目标进程这就需要唯一标识进程——使用端口号唯一标识进程。 端口号是传输层协议的内容是一个2字节16位的整数。IP地址端口号就可以唯一标识某一台主机的某一个进程。 一个进程可以绑定多个端口号但是一个端口号只能唯一标识一个进程。 端口号的范围划分 0-1023是知名端口号例如为HTTP、FTP、SSH等广为使用的应用层协议1024-65535是操作系统为系统进程动态分配的端口号。 2.端口号和进程ID的区别 端口号可以唯一标识进程进程ID也可以唯一标识进程为什么不使用进程ID来替代端口号呢 从技术角度来说确实可以实现使用进程ID来替代端口号但是这样会导致系统进程管理和网络强耦合。此外并不是所有的系统进程都需要进行网络通信只有部分进程才需要网络通信才需要端口号。 3.理解Socket 综上所述IP地址用来标识互联网中唯一的一台主机port用来标识该主机上唯一的一个网络进程。所以IPPort可以表示互联网中唯一的一个进程。 网络通信本质是进程间通信使用{srcIP srcPortdstIPdstPort}这样的4元组就能标识互联网中唯二的两个进程。 IPPort叫做套接字Socket 4.认识传输层中的典型协议 1.TCP(Transmission Control Protocol 传输控制协议) 有连接、可靠传输、面向字节流 2.UDP(UserDatagramProtocol 用户数据报协议) 无连接、不可靠传输、面向数据报 5.网络字节序 计算机中的字节数据有大端和小端存储方式之分所以网络数据流同样也会有大小端之分。如果一个采用大端存储方式的机器向一个采用小端存储的机器发送数据就会产生错误。 因此TCP/IP协议规定网络数据流必须采用大端字节序即从网络中读取到的数据流一定是大端字节序的因此我们还需要进行网络字节序和主机字节序的转换。 因为发送主机通常会缓冲区的数据按照内存地址从低到高的顺序发出接收主机将从网络中接收到的字节保存在缓冲区同样是按照内存地址由低到高保存先将数据保存到低地址再到高地址。例如数据0x1234abcd发送主机按照0x12 0x34 0xab 0xcd顺序发出接收主机将这些数据按照接收顺序将它们依次存储在缓冲区的低地址到高地址0x12 0x34 0xab 0xcd。这正好符合大端存储模式所以规定网络数据流必须采用大端字节序对于采用小端存储模式的机器要先将数据转换为大端存储模式再发送。 接下来是网络字节序和主机字节序转换的库函数 6.Socket编程接口 头文件#include sys/types.h #include sys/socket.h (1)创建 socket 文件描述符(TCP/UDP, 客户端 服务器) int socket(int domain, int type, int protocol); 创建一个套接字系统调用相当于打开了网卡 domain指定协议族常见协议族包括 AF_INETIPv4 协议族。AF_INET6IPv6 协议族。AF_UNIX 或 AF_LOCAL本地进程间通信IPC。AF_UNSPEC未指定协议族。 type指定套接字类型常见套接字类型包括 SOCK_STREAM流式套接字用于面向连接的 TCP 服务。SOCK_DGRAM数据报套接字用于无连接的 UDP 服务。SOCK_RAW原始套接字允许直接操作 IP 层或更低层的协议。 protocol通常设置为0表示选择默认协议 返回值成功返回一个非负文件描述符可用于后续套接字操作绑定、监听、连接、发送和接收失败返回 -1并设置全局变量 errno 以指示错误类型。 关于文件描述符Linux系统中一切皆文件创建套接字相当于打开了网卡设备网课也是一个文件所有返回的相当于是网卡的文件描述符。 (2)绑定端口号 (TCP/UDP, 服务器) int bind(int socket, const struct sockaddr *address, socklen_t address_len); 将一个套接字与一个特定的地址绑定通常是IP地址和端口号当这个套接字用于网络通信时就可以将数据发送到绑定的地址中或者从绑定的地址中接收数据。 套接字将监听发送到其绑定地址的数据。 socket文件描述符 address指向sockaddr结构体的指针结构体中包含了要绑定的地址信息。sockaddr通常有sockaddr_in(IPv4)、sockaddr_in6(IPv6)、sockaddr_un address_lenaddress指向的结构体的长度 返回值成功返回0失败返回-1并设置全局变量 errno 来指示错误类型。 (3)开始监听socket (TCP, 服务器) int listen(int socket, int backlog); (4)接收请求 (TCP, 服务器) int accept(int socket, struct sockaddr* address, socklen_t* address_len); (5)建立连接 (TCP, 客户端) int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); (6)接收数据(UDP,服务端) ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen); 在UDP协议通信时使用recvfrom函数接收来自发送到套接字绑定地址的数据包并将接收到的数据包存储在缓冲区buf中 sockfd文件描述符 buf用于存储接收到的数据包 len缓冲区的大小 flags标志位通常设置为0可以修改为其他标志位例如MSG_PEEK 标志允许你查看数据而不从队列中移除它 src_addr存储源地址信息即从哪里接收到的数据包输入输出型参数 addrlen存储src_addr中地址的长度 返回值成功返回接收到的数据字节数失败返回-1并设置 errno 以指示错误类型 (7)发送数据sendto ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen); 将数据发送到指定的地址IP地址端口号 sockfd文件描述符 buf指向发送数据所在缓冲区的指针 len要发送数据所在缓冲区的大小 flags标志位通常设置为0可以设置为其他值以改变发送行为如MSG_DONTROUTE指出数据不提交给路由选择 dest_addr发送的目标地址 addrlen存储dest_addr中地址的长度 返回值成功返回发送数据的字节数失败返回-1并设置全局变量errno以指示错误原因 (8)关闭网络套接字 #include unistd.h int close(int fd); 返回值成功返回0失败返回 -1并设置全局变量 errno 以指示错误原因 7.关于sockaddr结构体 头文件#include netinet/in.h #include arpa/inet.h #include sys/socket.h struct sockaddr {sa_family_t sa_family; // 地址族char sa_data[14]; // 地址数据具体含义取决于地址族 }; struct sockaddr是一个通用的套接字结构体它包含了地址族(sa_family)和地址数据(sa_data)等信息但是struct sockaddr没有针对特定协议进行详细划分例如IPv4、IPv6 或 UNIX域 因此直接使用struct sockaddr会导致编程上的复杂和错误。 因此引入了struct sockaddr_in和struct sockaddr_un但是它们的第一个字段都是相同的sa_family_t类型所以为了兼容性和灵活性需要将struct sockaddr_in和struct sockaddr_un强制类型转换为struct sockaddr类型再传给系统调用。 补充地址族sa_family的作用指定套接字通信的协议类型IPv4、IPv6、UNIX域 (1)struct sockaddr_in 专门用于IPv4网络通信 将地址数据sa_data细分为端口号sin_port、IP地址sin_addr、填充字节sin_zero等信息 #include netinet/in.h struct sockaddr_in {sa_family_t sin_family; // 地址族对于 IPv4 来说是 AF_INETuint16_t sin_port; // 端口号使用网络字节序大端序struct in_addr sin_addr; // IPv4 地址char sin_zero[8];//填充字节确保结构体大小与 sockaddr 一致 }; // 其中 struct in_addr 是一个嵌套的结构体通常定义如下 struct in_addr {uint32_t s_addr; // IPv4 地址要使用网络字节序 }; (2)struct sockaddr_un 专门用于UNIX域套接字通信同一台机器中的进程通信 结构体中包括地址族sun_family、套接字路径名sun_path等信息 #include sys/un.h struct sockaddr_un {sa_family_t sun_family; // 地址族对于 UNIX 域套接字来说是 AF_UNIX 或 AF_LOCALchar sun_path[108]; // 套接字路径名 };
http://www.dnsts.com.cn/news/63670.html

相关文章:

  • 网站建设单位是什么意思外贸网站用什么字体
  • 南山网站设计多少钱教做面食的网站
  • 潍坊市房屋和城乡建设局网站网站建设公司itcask
  • 英文网站的外部链接 建设公司名字变了网站备案
  • 个人制作个网站活动线报app
  • 车行网站源码西安网站制作价格
  • 外贸营销系统湖南网站seo推广
  • 买的网站模板会影响有赞商城商家版
  • 怎样做京东网站网络营销是学什么
  • 学校要求做网站深圳建筑工地招聘信息
  • 漳州做网站建设游戏开发和软件开发哪个难
  • 专业网站设计速寻亿企邦湖北做网站教程哪家好
  • 个人特种证件查询网站ui界面设计实例100例
  • 广东企业网站seo报价做网站开发的公司哪家好
  • 南京做网站制作公司外贸网站建设公司流程图
  • 如何提交网站给百度重庆涪陵建设银行网站
  • 网站建设方案书写做一个app大概要多少钱
  • 郑州专业做淘宝网站汉阴县住房和城乡建设局网站
  • 自助建站系统有什么好处然后搭建网站
  • 网站特效怎么做自适应学广告设计去哪个学校好
  • 做外贸没网站可以吗数据分析师报名官网
  • 百度网站推广方案电商搜索关键词
  • 网页与网站设计说明软件下载官网源码
  • 驻马店做网站优化网站推广关键词排名
  • soho在哪里做网站网站建设需要提供什么东西
  • 成都网站设计推荐柚米wordpress08影院源码
  • 织梦猫网站模板中国最著名网站建设公司
  • 给别人做非法网站能判多久南通网站推广公司
  • go语做网站网站上不去原因
  • 什么蓝色 适合公司网站主色企业建立一个网站步骤