计算机网络

目录

一、OSI开放式互联参考模型

二、TCP/IP参考模型

三、TCP三次握手

四、TCP的四次挥手

五、URL键入浏览器,工作流程描述

六 、HTTP常用状态码

七、POST和GET的区别

八、Cookie和Session的区别

九、HTTP和HTTPS的区别


一、OSI开放式互联参考模型

1.物理层 2.数据链路层 3.网络层 4.传输层 5.会话层 6.表示层 7.应用层

二、TCP/IP参考模型

1.应用层 2.传输层 3.网络层 4.数据链路层

三、TCP三次握手

ACK:确认序号标志

SYN:同步序号标志

FIN :释放连接

握手是为了建立连接,可以使用wireshark抓包查看建立连接发送的包的类型以及对应值。

  • 第一次握手
    Client发送SYN包(假设syn=x)到服务器,并且进入SYN_SEND状态,等待服务器确认收到。
  • 第二次握手
    Server收到SYN包,发送SYN+ACK包到Client,携带数据ack=x+1(确认已收到syn:x),syn=y。此时服务器进入SYN_RECV(SYN接收)状态。
  • 第三次握手
    Client收到服务器的SYN+ACK包,向服务器发送ACK包,携带数据ack=y+1(确认已收到syn=y)。

Client方ACK包之后。Client和Server进入Established(已获得确认)状态,完成三次握手。

为什么需要三次握手握手才能建立起连接?发送包的过程中还涉及seq数据的传输,三次握手是为了初始化Sequence Number的值。

首次握手的隐患

问题起因分析:

  • Server收到Client的SYN,回复SYN+ACK的之后未收到第三次握手需要Client发送的最后的ACK确认包。
  • Server会不断重试发送SYN+ACK包直至超时,Linux默认五次,每次时间倍增,总耗时1+2+4+8+16+32=63s

这个时候可能会出现问题?如果黑客不断向服务器发送请求,但是却不触发第三次握手,就会导致syn序列被大幅占用,导致服务器无法处理正常的业务需求,解决方案 ↓↓↓

针对SYN Flood的防护措施

  • SYN队列满后,服务器会通过tcp_syncookies参数回发SYN Cookie
  • 若为正常连接,Client会回发SYN Cookie,直至建立连接

建立连接后Client出现故障后怎么办

  • 向对方发送保活探测报文,如果未收到则继续发送
  • 尝试次数达到保活探测上限数仍未收到回应则终端连接

四、TCP的四次挥手

挥手是为了终止连接,与"三次握手"的目的相反。第一次挥手可以由Client或者Server发起....

  • 第一次挥手
    Client发送一个FIN包用来关闭Client到Server的数据传输,携带数据seq=x,发送之后自身进入FIN-WAIT-1状态。
  • 第二次挥手:
    Server收到FIN包之后,发送ACK包给Client,携带参数ack=x+1(确认已收到seq:x),seq=y,自身进入CLOSE-WAIT状态。
  • 第三次挥手
    Server发送FIN+ACK,用来关闭Server到Client的数据传输,携带数据ack=x+1(同上),seq=z(seq不重复,是唯一标识),Server进入LAST-ACKS状态。
  • 第四次挥手
    Client收到FIN后,进入FIN-WAIT-2状态;收到FIN+ACK之后,发送一个ACK包给Server,携带数据ack=z+1,seq=x+1,进入TIME-WAIT状态,这个状态会次序2MSL,也就是两个数据包传输时间,确保Server收到发过去的消息。

五、URL键入浏览器,工作流程描述

  1. DNS解析(将url解析为对应IP地址)
    查找过程:
    浏览器DNS缓存 → (操作系统DNS缓存 → 操作系统hosts文件)系统DNS缓存 本地域名服务器(本地域名服务器迭代寻找)↓↓↓  依次对下列服务器发起请求(以www.baidu.com为例)
    :向根域名服务器发送请求,返回com域的顶级域名服务器的地址
    :向com域的顶级域名服务器发送请求,返回baidu.com权限域名服务器的地址
    :向baidu.com权限域名服务器发起请求,返回www.baidu.com的IP地址

    本地域名服务器 将得到的IP地址返回给操作系统,同时自己也将IP地址缓存起来
    操作系统将 IP 地址返回给浏览器,同时自己也将IP地址缓存起来
    baidu.com -- 顶级域名,只有一个doc分隔符
    www.baidu.com ---- 二级域名,两个doc分隔符。所以百度其实是一个二级域名。

  2. TCP连接  ——  三次握手

  3. 发送HTTP请求  ——  涉及POST/GET请求方式,下文有对应解释

  4. 服务器处理请求并返回HTTP报文

  5. 浏览器解析解析并渲染页面

  6. 断开连接  ——  四次挥手

六 、HTTP常用状态码

  • 1xx:指示信息——请求已接收,继续处理
  • 2xx:成功——请求已成功接收、理解
    • 200 OK:正常返回信息
  • 3xx:重定向——要完成请求必须进行更进一步的操作
  • 4xx:客户端错误——请求有语法错误或请求无法实现
    • 401 Unauthorized:请求未经授权
    • 403 Forbidden:服务器收到请求,但是拒绝提供服务
    • 404 Not Found:请求资源不存在
  • 5xx:服务端错误——服务器未能实现合法请求
    • 500 Internal Server Error:服务器发生不可预见错误(需查看服务器error.log)
    • 503 Server Unavaliable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常

七、POST和GET的区别

  • HTTP报文层面:GET请求的参数会直接显示在URL的后面,以&拼接,以key:value形式表示
  • 数据库层面:GET请求更多的是对数据库的查找操作,不会对数据库造成修改、损害。POST大多会修改数据库
  • 缓存角度:GET请求可以缓存,POST不可以。

HTTP缓存通常只适用于idempotent(幂等性) request(可以理解为查询请求,也就是不更新服务端数据的请求),这也就导致了在HTTP的世界里,一般都是对Get请求做缓存,Post请求很少有缓存。

八、Cookie和Session的区别

  • Cookie
    • 是由服务器发送给客户端的特殊信息,以文本的形式存放在客户端
    • 客户端再次请求的时候,会把Cookie回发
    • 服务器收到后,会解析Cookie,生成与客户端相对应的内容
  • Session
    • 位于服务器内的数据
  • Cookie和Session的区别
    • Cookie数据存放在客户端,Session存放在服务器
    • Session相对于Cookie更加安全
    • Session会占用服务器资源,若考虑减轻服务器负担,应当使用Cookie

九、HTTP和HTTPS的区别

  • HTTPS需要到CA申请证书,HTTP不需要
  • HTTPS密文传输,HTTP明文传输
  • 连接方式不同,HTTPS使用443端口,而HTTP使用80端口
  • HTTPS=HTTP+加密+认证+完整性保护,相较于HTTP安全

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值