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

怎样自己做网络推广网站网页脚本设计

怎样自己做网络推广网站,网页脚本设计,龙岩做网站怎么做,网站建设理由文章目录 网络基础21. 应用层1.1 协议1.2 HTTP 协议1.2.1 URL1.2.2 urlencode和urldecode1.2.3 HTTP协议格式1.2.4 HTTP的方法1.2.5 HTTP的状态码1.2.6 HTTP 常见的header1.2.7 最简单的HTTP服务器 2. 传输层2.1 端口号2.1.1 端口号范围划分2.1.2 认识知名端口号2.1.3 netstat2… 文章目录 网络基础21. 应用层1.1 协议1.2 HTTP 协议1.2.1 URL1.2.2 urlencode和urldecode1.2.3 HTTP协议格式1.2.4 HTTP的方法1.2.5 HTTP的状态码1.2.6 HTTP 常见的header1.2.7 最简单的HTTP服务器 2. 传输层2.1 端口号2.1.1 端口号范围划分2.1.2 认识知名端口号2.1.3 netstat2.1.4 pidof 3. UDP 协议3.1 UDP协议格式3.2 UDP的特点3.3 基于UDP的应用层协议 4. TCP协议4.1 TCP协议段格式4.2 确认应答ACK机制4.3 超时重传机制4.4 连接管理机制4.5 滑动窗口4.6 流量控制4.7 拥塞控制4.8 延迟应答4.9 捎带应答4.10 面向字节流4.11 粘包问题4.12 TCP异常情况4.13 TCP小结 网络基础2 1. 应用层 满足日常需求的应用程序都是在应用层 1.1 协议 协议是一种约定。socket api在读写程序的时候都是按照字符串的方式发送的如果传输一些结构化数据该怎么办 只要保证一端发送数据的时候在另一端能够正确的解析。这就是应用层协议 1.2 HTTP 协议 HTTP协议超文本传输协议 1.2.1 URL 平时俗称的“网址”就是URL 1.2.2 urlencode和urldecode 像这样的字符串已经被URL当做特殊意义理解了因此不能随意出现在URL当中 某个参数需要带特殊字符就必须先对这些特殊字符进行转义 转义规则如下 将需要转义的字符转为16进制然后从右到左取4位不足4位直接处理。每两位做一位前面加上% 1.2.3 HTTP协议格式 HTTP请求 首行请求方法 URL 版本Header请求的属性冒号分割的键值对每组属性之间使用\n分割遇到空行表示header部分结束Body空行后面的内容都是body允许为空字符串如果body存在则在头部中有一个Content -Length来标识Body的长度 HTTP响应 首行版本号 状态码 状态码解释Header请求的属性冒号分割的键值对每组属性之间使用\n分割遇到空行表示header部分结束Body空行后面的内容都是body如果body返回一个html页面那么页面内容就是在body当中 1.2.4 HTTP的方法 其中最常用的就是GET和POST方法 1.2.5 HTTP的状态码 403状态码表示服务器理解请求但拒绝执行请求。这通常是因为请求的资源对用户是禁止访问的例如需要身份验证的页面或没有访问权限的页面。403状态码与401状态码的区别在于401状态码表示未经身份验证的用户而403状态码表示已经身份验证的用户但没有访问权限。 302状态码表示重定向。当服务器收到客户端的请求后会返回302状态码和一个Location头部指示客户端重定向到另一个URL。这通常用于临时性的重定向例如当一个网页被移到了新的URL上时服务器可以返回302状态码和新的URL以便客户端自动跳转到新的URL。 303状态码表示重定向与302状态码类似。它通常用于POST请求后的重定向以防止客户端重复提交表单数据。当服务器收到POST请求后如果希望客户端重定向到另一个URL来获取结果服务器会返回303状态码和一个Location头部指示客户端进行GET请求以获取结果。这样可以防止客户端在刷新页面时重新提交表单数据。 1.2.6 HTTP 常见的header Content-Type 数据类型Content-Length, Body的长度Host客户端告知服务器所请求的资源是在那个主机的那个端口上User-Agent声明用户的操作系统和浏览器的版本信息referer: 当前页面是从那个页面跳转过来的location搭配3XX 状态码告诉客户端接下来去哪里访问Cookie 用于在客户端存储少量信息通常实现会话的功能 1.2.7 最简单的HTTP服务器 实现一个最简单的服务器返回客户端一个hello world #include iostream #include cstring #include sys/types.h /* See NOTES */ #include sys/socket.h #include sys/un.h #include stdlib.h #include stdio.h #include unistd.h #include string.h #include netinet/in.h #include arpa/inet.hint main(int argc, char *argv[]) {if (argc ! 3){std::cout 输入参数过少 std::endl;return 0;}int sock socket(AF_INET, SOCK_STREAM, 0);struct sockaddr_in local;memset(local, 0, sizeof(local));local.sin_family AF_INET;local.sin_addr.s_addr inet_addr(argv[1]);local.sin_port htons(atoi(argv[2]));bind(sock, (struct sockaddr*)local, sizeof(local));listen(sock, 32);while (true){struct sockaddr_in client;memset(client, 0, sizeof(client));socklen_t len sizeof(client);int n accept(sock, (struct sockaddr*)client, len);if (n 0) continue;char buf[1024];const char* hello h1hello world/h1;sprintf(buf, HTTP/1.0 200 Ok\nContent-Length:%lu\n\n%s, strlen(hello), hello);write(n, buf, sizeof(buf));}return 0; }2. 传输层 负责把数据从发送端传输到接收端 2.1 端口号 端口号标识了主机进行通信的不同的应用程序 2.1.1 端口号范围划分 0-1023 知名端口号HTTP、FTP、SSH广为使用的应用层协议端口号都是固定的1024-65535操作系统动态分派的端口号客户端程序的端口号 2.1.2 认识知名端口号 ssh服务使用22端口号ftp服务使用21端口号telnet服务使用23端口号http服务使用80端口号https服务使用443端口号 cat /etc/services 一个进程可以绑定多个端口号但是一个端口号不能绑定多个进程 2.1.3 netstat netstat是用来查看网络状态的重要工具 n 显示别名能显示数字的全部转化为数字l 仅列出在listen状态的p 显示建立相关链接的程序名t 仅显示TCP相关的u 显示udp相关的a 显示所有选项默认不显示Listen 2.1.4 pidof 查看服务器的进程id 3. UDP 协议 3.1 UDP协议格式 16位UDP长度表示整个数据报UDP首部UDP数据的最大长度如果校验和出错就会直接丢弃 3.2 UDP的特点 udp传输的过程类似于寄信 无连接知道对方的IP和端口进行传输不需要建立连接不可靠没有确认机制没有重传机制如果因为网络无法发送给对方UDP也不会给应用层任何错误信息面向数据报不够灵活的控制读写数据的次数和数量 面向数据报 应用层交给UDP多长的报文UDP原样发送既不会拆分也不会合并 用udp传输100个字节的数据 如果发送端一次调用sendto发送100个字节那么接收端必须调用一次对应的recvfrom接收100个字节不能循环的调用10次recvfrom 每次接收10个字节 UDP的缓冲区 Udp没有真正意义上的发送缓冲区调用函数之后直接交给内核由内核将数据传给网络层协议进行后续的传输动作。UDP如果接收缓冲区满了之后再达到的UDP数据就会被丢弃 UDP的socket既能读也能写这个概念就叫做全双工 3.3 基于UDP的应用层协议 NFS网络文件系统TFTP简单文件传输协议DHCP动态主机配置协议DNS域名解析协议 4. TCP协议 TCP全称为“传输控制协议”要对数据的传输进行一个详细的控制 4.1 TCP协议段格式 4位TCP报头长度表示TCP报头有多少个32位bit 有多少个4字节所以TCP头部最大长度是60字节 15 * 4 6 为标志位 URG紧急指针是否有效ACK确认号是否有效PSH提示接收端应用程序立刻从TCP接收缓冲区读走数据RST对方要求重新建立连接把携带RST标识称为复位报文段SYN建立请求连接携带SYN标识的称为同步报文FIN通知对方本端要关闭了携带FIN标识的称为结束报文段 16位校验和发送端填充CRC校验接收端校验不通过则认为数据有问题这个不光包含TCP首部也包含TCP数据部分 16位紧急指针标识那部分数据是紧急数据 4.2 确认应答ACK机制 TCP将每个字节的数据都进了编号称为序列号 每一个ACK都带有对应的确认序号列意思是告诉发送者收到了哪些数据下一次从哪里开始发送 4.3 超时重传机制 如果主机A在一个特定时间间隔内没有收到B发来的确认应答就会重新发送 但是主机A未收到主机B的确认应答可能是因为ACK丢失了 因为主机B会收到很多重复数据那么TCP协议需要识别哪些包是重复的包并且把重复的包丢弃掉。这时候可以利用前面提到的序列号就可以很容易做到去重的效果 超时时间如果确定 找到一个最小的时间保证“确认应答一定能在这个时间内返回”但是这个事件段的长短随着网络环境的不同也是有差异的。如果设置的时间太长会影响整体的重传效率如果设置的时间太短有可能频繁发送重复的包 TCP为了保证无论在任何环境下都比较高性能的通信因此会动态的计算这个时间 超时以500ms为一个单位进行控制每次判定超时重发的超时时间都是500ms的整数倍如果等待一次后仍然得不到应答等待2 * 500 ms在重传如果仍然得不到应答以指数形式递增累计到一定的重传次数TCP认为网络或者对端主机出现异常就会关闭连接 4.4 连接管理机制 在正常情况下TCP要经过三次握手建立连接和四次挥手断开连接 4.5 滑动窗口 对每个发送的数据段都要给一个ACK应答。收到ACK后再发送下一个数据段这样做的一个比较大的缺点是性能比较差尤其是数据段返回需要的时间比较长 既然这样一发一收的性能比较低我们可以一次性发送多条数据就可以大大提高性能其实是将多个段的等待时间重叠在一起 操作系统内核为了维护这个滑动窗口需要开辟发送缓冲区来记录哪些数据没有应答只有确认应答的数据才能从缓冲区删掉 窗口越大则网络的吞吐率越高 如果出现了丢包如何重传 这样需要分情况考虑 情况一数据报到了但是ACK丢了 这种情况下部分ACK丢了不要紧可以通过后续的ACK进行确认 情况二数据报丢了 如果发送端主机连续三次收到同样的ACK应答就会将对应的数据重新发送。 被收到接收端操作系统的接收缓冲区内 这种机制被称为“高速重发控制”也叫快重传 4.6 流量控制 接收端处理数据的速度是有限的如果发送端发送的太快。导致接收端的缓冲区被打满这个时候如果发送端继续发送就会造成丢包继而引起丢包重传一系列连锁反应 TCP 支持根据接收端的处理能力来决定发送端的发送速度这个机制叫做流量控制 接收端将自己可以接收的缓冲区大小放入TCP首部的“窗口大小”字段通过ACK通知发送端窗口大小字段越大说明网络的吞吐量越高接收端一旦发现自己的缓冲区快满了就会将窗口设置成一个更小的值通知发送端发送端接收到这个窗口的大小之后就会控制自己的发送速度如果接收方缓冲区满了就会将窗口设置为0这是发送方不在发送数据但是定期发送窗口探测数据段是接收端窗口大小告诉发送端 4.7 拥塞控制 虽然TCP有了滑动窗口可以高效发送大量的数据但是在刚开始时就发送大量的数据可能引发问题 网络上可能有很多计算机可能当前的网络状态就已经比较拥堵在不清楚网络状态的情况下贸然发送大量数据可能雪上加霜 TCP引入慢启动机制先发少量的数据探探路摸清当前网络的拥堵情况在确定按照多大的速度传输数据 发送开始的时候定义拥塞窗口大小为1 每次收到一个ACK应答拥塞窗口加1。每次发送数据报的时候将拥塞窗口和接收端主机反馈的窗口大小做比较取较小的值作为直接发送的窗口 这个地方有个慢启动的阈值当拥塞窗口超过这个阈值的时候不在按照指数方式增长而是线性方式增长 4.8 延迟应答 如果接收数据的主机立刻返回ACK应答这时候返回的窗口可能比较小。如果接收端稍微等一会在应答返回的窗口可能就很大 窗口越大网络吞吐量就越高目标是在保证网络不拥塞的情况下尽量提高传输效率 每个包都延迟应答吗 数量限制每隔N个就应答一次时间限制超过最大延迟时间就应答一次 4.9 捎带应答 在延迟应答的基础上我们发现很多情况下客户端服务器在应用层也是“一发一收”的意味着客户端给服务器发送了一条消息服务端也会返回一个消息。这个是会后ACK就可以搭顺丰车和服务器返回的消息一起返回给客户端 4.10 面向字节流 创建一个TCP的socket同时在内核中创建一个接收缓冲区和发送缓冲区 调用write时数据会先被写入发送缓冲区当中如果发送的字节流太长会被拆分成多个TCP报文发出如果发送的字节数太短就会在缓冲区里等待等待缓冲区长度差不多了或者合适的时机发出去接收数据的时候数据也是从网卡驱动到达内核接收缓冲区。然后调用read可以从缓冲区里读取数据TCP的一个连接既有发送缓冲区也有接收缓冲区对于这一个连接即可以读数据也可以发送数据这就是全双工 4.11 粘包问题 这里的“包”指的是应用层的数据报 在TCP协议头中没有UDP一样的“报文长度”但是有一个序号这样的字段。站在传输层的角度TCP是一个报文一个报文发送过来的。按照序号排好放在缓冲区。站在应用层的角度看到的是一连串的数字应用程序看到这一连串的字节数据就不知道那个部分开始啊到那个部分是一个完整的数据报 如何解决粘包问题 明确两个包之间的边界 4.12 TCP异常情况 进程终止进程终止会释放文件描述符仍然可以发送FIN。和正常关闭没什么区别 一旦接收端有写入操作接收端发现连接已经不在了就会进行reset。即使没有写入操作TCP也会内置一个保活定时器会定期询问对方还在不在也会连接释放 4.13 TCP小结 可靠性 校验和序列号按序到达确认应答超时重发连接管理流量控制拥塞控制 提高性能 滑动窗口快速重传延迟应答捎带应答 listen的第二个参数是为了保证系统资源不浪费 TCP连接管理使用两个队列 半链接队列全连接队列 全连接队列的长度会受到listen的第二个参数的影响。这个队列的长度是listen的第二个参数1
http://www.pierceye.com/news/176438/

相关文章:

  • 因脉网站建设公司怎么呀韩国网站开发建设技术特点
  • 网站备案 个人 单位安徽网站建设推广
  • 黔江网站制作网站招标建设
  • 网站注册公司目前最好的引流方法
  • 小米wifi设置网址入口网站通信工程建设网站
  • 深圳专业网站建在线做插画的网站
  • 站长之家网站查询怎么样创建自己的小程序
  • 站酷海报设计图片网站备份怎么做
  • 做网站挣钱么云市场 wordpress
  • 网站域名管理规范seo专员是什么
  • 网站制作+资讯网站特色栏目重要性
  • 网站qq 微信分享怎么做的随州市住房和城乡建设部网站
  • 资源网站建设多少钱手机网站页面文字做多大
  • 烟台专业做网站宜昌教育云网站建设
  • 慕课联盟网站开发实战wordpress怎样修改域名
  • 什么电脑做网站前段用旅游网站建设的利益
  • 做 暧视频在线观看网站花都网站建设设计
  • 黄石企业网站设计服务外包有哪些
  • 团队合作网站网站制作的报价大约是多少
  • 网站在线留言系统能挣钱的平台 正规的
  • 冀州网站制作泉州握旗公司网站建设
  • 免费php企业网站苏州网站建设多少钱
  • 重庆网站制作设计抚州网站建设
  • 国外psd网页模板网站免费学校网站管理系统
  • 网站开发合作合同范本电子商务营销渠道有哪些
  • 云南网站建设哪个好沈阳视频制作公司
  • 可以做公众号的一些网站企业级网站开发需求分析
  • 建设网站收费标准品牌网络推广公司排名
  • 网站怎么做动态背景图片营销型网站建设的优势有哪些
  • 专业网站制作软件网页设计五个页面