一、OSI七层模型

  • 应用层 Application:网络应用程序及应用层协议留存(message)
  • 表示层 Presentation:使通信的应用程序能够释放交换数据的含义
  • 会话层 Session:提供数据交换定界和同步功能,包括建立检查点和恢复方案
  • 运输层 Transport:在应用程序端点间传送用应用层报文(segment)
  • 网络层 Network:将数据报(datagram)从一台主机移动到另一台主机
  • 链路层 Link:相邻网络节点间传递(frame)
  • 物理层 Physical:比特从一个节点移动到另一个节点

体系结构分层原因:

  1. 某层改变时系统其余部分保持不变
  2. 每一层通过自身内部行动和依靠自身下层提供的服务实现一种服务
  3. 模块化易于系统维护和更新

不同层的协议

  • 应用层:HTTP、FTP、SMTP、邮件访问协议(POP3、IMAP、HTTP)、DNS
  • 运输层:UDP、TCP
  • 网络层:IP、ICMP、OSPF、IGMP
  • 链路层:SLIP、CSLIP、PPP、ARP、RARP、MTU
  • 物理层:ISO2110、IEEE802、IEEE802.2

二、HTTP协议

HTTP协议:超文本传输协议,web的应用层协议,是web的核心协议。

HTTP协议使用TCP作为它的支撑运输协议,是一个无状态的协议,不保存客户的任何信息。

http协议可以分为非持续连接协议持续连接协议

  • 非持续连接:每个请求/响应对是经一个单独的TCP连接发送

  • 持续连接:所有请求/响应对是经相同的TCP连接发送

HTTP默认使用持续连接

1. HTTP请求方法

  • GET
    向特定的资源发出请求。它本质就是发送一个请求来取得服务器上的某一资源。资源通过一组HTTP头和呈现数据(如HTML文本,或者图片或者视频等)返回给客户端。GET请求中,永远不会包含呈现数据。
  • TRACE
    回显服务器收到的请求,主要用于测试或诊断
  • CONNECT
    预留给能够将连接改为管道方式的代理服务器。
  • HEAD
    向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以再不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。
  • PUT
    向指定资源位置上传其最新内容
  • DELETE
    请求服务器删除Request-URL所标识的资源
  • POST
    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中对应POST请求函数:web_submit_data,web_submit_form
  • OPTIONS
    返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向web服务器发送‘*’的请求来测试服务器的功能性

HTTP服务器至少应该实现GET和HEAD/POST方法,其他方法都是可选的,此外除上述方法,特定的HTTP服务器支持扩展自定义的方法。

2. GET和POST的区别

GET请求无消息体,只能携带少量数据(最多只能有1024字节)将数据放在url地址中。GET请求提交的数据放置在HTTP请求协议头中。
POST请求有消息体,可以携带大量数据,将数据放在消息体中。POST提交的数据放在实体数据中。

3. HTTP状态码
HTTP状态码:告知客户端从服务器端返回的请求结果。

  • 1xx information 接受的请求正在处理

  • 2xx success 请求正常完毕

    • 200 OK : 请求在服务器端被正常处理了
    • 204 No Content: 表示服务器接收的请求已经成功处理,但是在返回的响应报文中不含实体的主体部分。
    • 206 Partial Content:表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文内包含由Content-Range指定范围的实体内容。
  • 3xx redirction 需要进行附加操作以完成请求

    • 301 Moved Permanently :表示请求的资源已经分配了新的URI,以后请求该资源应该访问新的URI。
    • 302 Found:表示请求的资源已经被分配了新的URI,希望客户端本次能使用新的URI访问。
    • 303 See Other:表示由于请求对应的资源存在着另一个 URI,应使用 GET方法定向获取请求的资源。
    • 304 Not Modified:表示客户端发送附带条件的请求时,服务器端允许请求访问资源,但未满足条件的情况。
    • 307 Temporary Redirect:302 Found 状态码有相同的含义。307 不会强制浏览器将 POST 方法改为 GET 方法,而是遵循浏览器自身的标准。
  • 4xx client error 服务器无法处理请求

    • 400 Bad Request :表示请求报文中存在语法错误。
    • 401 Unauthorized:表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。
    • 403 Forbidden:表明对请求资源的访问被服务器拒绝了,当未获得文件系统的访问授权,访问权限出现某些问题
    • 404 Not Found:表示服务器上无法找到请求资源。
  • 5xx sever error 服务器处理请求出错

    • 500 Internal Server Error:表明服务器端在执行请求时发生了错误。
    • 503 Service Unavailable:服务器暂时处于超负载或正在进行停机维护

三、输入URL到页面加载过程

1. 浏览器构建HTTP Request请求
应用层进行DNS解析,通过DNS将域名解析成IP地址,按照浏览器缓存、系统缓存、路由器缓存、ISP(运营商)DNS缓存、根域名服务器、顶级域名服务器、主域名服务器的顺序,逐步读取缓存,直到拿到IP地址。
应用层生成HTTP请求报文,HTTP请求报文包括起始行、首部和主体部分。
传输层建立TCP连接,进行三次握手。
网络层使用IP协议来选择路线(IP协议的路由功能)。
数据链路层实现网络相邻节点间可靠的数据连接。把数据包packet封装成帧(Frame),并按顺序传送各帧。
物理层传输数据,数据链路层的帧(Frame)转换成二进制形式的比特(Bit)流,从网卡发送出去,再把比特转换成电子、光学或微波信号在网络中传输
2. 网络传输
3. 服务器构建HTTP Response响应
服务器接收到这个比特流,把比特流转换成帧格式,上传到数据链路层,服务器发现数据帧中的目的MAC地址与本网卡的MAC地址相同,服务器拆除数据链路层的封装后,把数据包上传到网络层。服务器的网络层比较数据包中的目的IP地址,发现与本机的IP地址相同,服务器拆除网络层的封装后,把数据分段上传到传输层。传输层对数据分段进行确认、排序、重组,确保数据传输的可靠性。数据最后被传到服务器的应用层。
5. 网络传输
6. 浏览器渲染页面

四、TCP三次握手与四次挥手

参考:参考原文
TCP头部结构

序列号seq:
占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。

确认号ack:
占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接收到下一个字节的编号;因此当前报文段最后一个字节的编号+1即为确认号

确认ACK:
占1位,仅当ACK=1时,确认号字段才有效。ACK=0时,确认号无效

同步SYN
连接建立时用于同步序号。当SYN=1,ACK=0时表示:这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。

终止FIN:
用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接

ACK\SYN\FIN表示标志位,值为1或0

三次握手过程——TCP建立连接


第一次握手:
客户端发送连接请求报文(SYN=1,seq=x)
第二次握手:
服务器端接收到报文后向客户端回复ACK报文(SYN=1,ACK=1,seq=y,ack=x+1),并分配资源
第三次握手:
客户端接收到ACK报文后也向服务端发送ACK报文(ACK=1,seq=x+1,ack=y+1),并分配资源。
完成三次握手。

A向B建立TCP连接,通过第一次握手B知道A能够发送数据,通过第二次握手A知道B能发送数据,第一次加第二次握手A知道B能接收数据,结合第三次握手,B知道A能够接收数据

四次挥手过程——TCP断开连接

TCP断开连接可以是客户端发起或者服务端发起。
第一次挥手:
客户端进程发出连接释放报文(FIN=1,seq=u),停止发送数据。
第二次挥手:
服务端接收到连接释放报文,向客户端发出确认报文(ACK=1,seq=v,ack=u+1)
第三次挥手:
客户端接收到服务器的确认报文后,等待服务器端发送连接释放报文。这期间服务器将向客户端发送最后的数据。然后服务器端向客户端发送连接释放报文(FIN=1,ACK=1,seq=w,ack=u+1)
第四次挥手:
客户端接收到服务器端发送的连接释放报文后,发出确认报文(ACK=1,seq=u+1,ack=w+1)。服务器端接收到连接释放确认报文后立即关闭,但客户端会等待2∗∗MSL(最长报文段寿命)后断开。

问1:为什么要三次握手?只有两次握手可以吗?
答:三次握手可以完成两个重要功能:服务器端和客户端都知道彼此已经准备好(接收和发送);并且允许双方协商初始序列,在握手过程中发送和确认序列号。如果只有两次握手,可能发生已经失效的请求连接报文被传送到了以后产生错误。假设A向B发送一个连接请求,但请求未及时发送到B,A认为请求失败重新向B发送了一次请求,B正常收到后建立连接传输完成后释放连接。此时A第一次发送的请求到达B,B认为A再次发起请求。若是两次握手,连接就会建立成功,B会一直等待A发送数据,造成B的资源浪费。但如果是三次握手,B向A发送确认报文后A未回应则会释放连接。

问2:为什么需要四次挥手
答:第一次挥手,A向B发起请求表示A没有数据需要发送了。第二次挥手,B向A发送信号确认A的断开请求。第三次挥手B向A发送请求断开连接,表示B没有数据需要传输了。第四次挥手A向B发送确认请求,同意断开。第二、三次挥手分开是因为在第二次挥手后B可能还有最后的数据需要传输给A。挥手次数比握手多一次是因为握手通信只需要连接,而挥手过程不仅要处理连接还要处理数据

问3:为什么客户端需要等待2MSL再关闭
答:因为网络是不可靠的,最后一个ACK可能跌势,等待时间是用来重发可能丢失的ACK报文。客户端发出最后的ACK回复后假设ACK丢失,服务器端没有收到ACK就会不断重复发送FIN片段。客户端必须等待一段时间确认服务器端是否接收到ACK,如果客户端接收到服务器端发送的FIN,就会再次发送ACK并且等待2MSL(一个发送和一个回复所需的最大时间)。

问4:什么是半连接队列?什么是全连接队列?
答:TCP三次握手后,在第一次握手后服务器端将相关信息存在半连接队列中,然后第二次握手回复确认报文给客户端。客户端发送确认报文后全连接队列没满从半连接队列拿出相关信息放入到全连接队列中。

web安全——基础知识(计算机网络part1)相关推荐

  1. 基础知识-计算机网络-应用层

    基础知识-计算机网络-应用层 1 应用层协议原理 1.1 网络应用程序体系结构 1.2 进程通信 1.3 应用层协议 1.4应用程序所需要的服务(运输服务) 1.5 因特网运输协议提供的服务 2 We ...

  2. 电子商务计算机网络的分类可分为,电子商务员基础知识:计算机网络的分类与拓扑结构...

    电子商务员基础知识:计算机网络的分类与拓扑结构 分类:电子商务师 | 更新时间:2016-07-07| 来源:转载 1.按分布距离分类 计算机网络按分布距离可分为局域网(LAN).城域网(MAN)和广 ...

  3. Web前端基础知识整理

    1. 前端基础知识 文件分类 XML(扩展标记语言) 装载有格式的数据信息,用于各个框架和技术的配置文件描述 特点: 扩展名为.xml 内容区分大小写 标签要成对出现,形成容器,只能有一个 标签按正确 ...

  4. html clear属性值,【Web前端基础知识】clear使用方法

    [摘要] 前端即网站前台部分,运行在PC端,移动端等浏览器上展现给用户浏览的网页.下面是[Web前端基础知识]clear使用方法,小编建议有准备参加考试的备考生一定要合理规划时间,仔细阅读相关规定,提 ...

  5. 计算机网络专业的基础知识,计算机网络专业基础知识.doc

    计算机网络专业基础知识 一.填空题 计算机网络按可以分为 和 . 和 . 对导线组成, 对进行. TCP 服务,UDP可以提供 服务. 层,路由器工作在 层. ,其中 经常处于守候状态. , . 协议 ...

  6. Java WEB开发实战 之 第二部分:Web应用基础知识【私塾在线原创】

    基础知识概述 Internet 中文名也称"因特网"或"国际互联网",是一个由各种独立运行和管理的计算机网络组成的全球范围的计算机网络,网络间可以畅通无阻地交换 ...

  7. 计算机管理员基础知识,计算机网络管理员(基础知识)

    <计算机网络管理员(基础知识)>由中国就业培训技术指导中心按照标准.教材.题库相衔接的原则组织编写,是国家职业技能鉴定推荐辅导用书.书中内容根据<国家职业标准?计算机网络管理员> ...

  8. 计算机通信网络的基础知识,计算机网络基础知识之通信方式

    $2.1.3 通信方式 在计算机内部各部件之间.计算机与各种外部设备之间及计算机与计算机之间都是以通信的方式传递交换数据信息的.通信有两种基本方式,即串行方式和并行方式.通常情况下,并行方式用于近距离 ...

  9. web service基础知识

    Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到 ...

  10. 计算机网络技基础知识,计算机网络技基础知识点2014.doc

    计算机网络技基础知识点2014 精编资料 <计算机网络技术基础>知识点1. 用一台计算机作为主机,通过通信线路与多台终端...10. 计算机网络自主性是指连网的计算机之间不存在制约控制关系 ...

最新文章

  1. spring启动过程之源码跟踪(上)--spring Debug
  2. Python字符串基础操作
  3. xp本地计算机策略被更改,组策略的使用方法,和XP系统的实用修改窍门
  4. Elasticsearch启动问题:max number of threads [3753] for user [XX] is too low, increase to at least [4096]
  5. Quartz作业调度框架及时间表达式的含义和语法
  6. Python学习笔记之函数(二)
  7. Golang string处理
  8. 阿里巴巴大数据运维平台实践
  9. 《Perl语言入门》读书笔记(一)Perl简介
  10. 虚幻学习4---制作实时逼真的毛发【笔记】
  11. FMEA软件之边界图(FMEAHunter)
  12. ext4文件系统数据恢复的方法总结
  13. Unity Shader-后处理:简单的颜色调整(亮度,饱和度,对比度)
  14. 计算机五笔打字口诀,电脑五笔打字的字根口诀是什么?
  15. 手机输入法哪家好用?用户目前最喜爱这4款,有你正在使用的吗
  16. 夜店App不应该是SNS,而应该是O2O
  17. 浅聊智能推荐下的人物画像
  18. 今日说“法”:FPGA芯片如何选型?
  19. 太魔人招新|快来加入我们吧~
  20. 辛辛苦苦学C语言究竟有什么用?

热门文章

  1. ROS_Kinetic_23 ROS流行版本和相关书籍汇总
  2. java 整数 范围_探究JAVA整数的取值范围
  3. 非常棒的在线图表模板工具 - Chart Chooser
  4. virtual方法和abstract方法的使用(轉載)
  5. 修改注册表(设置首页)
  6. 用友财务Excel转换为防伪税控开票系统TXT导入文件
  7. 华为android9使用外置存储卡,华为Mate 9支持扩展储存卡吗?支持多大储存卡?
  8. Python爬取国家统计局官网最新全国所有城市县镇数据
  9. Javaweb安全——Java动态代理
  10. 软件工程实训——第一天