天天看点

网络方面的一些知识点

文章引用了 : https://www.cnblogs.com/Andya/p/7272462.html

wireshark 用来抓包的软件  

1.OSI 开放式互联网参考模型(7层)

物理层,数据链路层,网络层(IP),传输层(TCP/UDP),

会话层,表示层,应用层

OSI模型只是一个参考的标准,并没有实现

OSI的实现是“TCP/IP”

2.“TCP/IP”协议 分四层

3.IP 协议 网络层 不可靠传输

4.TCP 协议 传输层 面向连接的、可靠的、基于字节流的传输层通信协议

6个标志位:

URG-紧急指针有效

ACK-确认序号有效

PSH-接收方应尽快将这个报文交给应用层

RST-连接重置

SYN-同步序号用来发起一个连接

FIN-终止一个连接

(IP是用来标示唯一的主机,

  TCP中的端口号用来标示唯一的进程)

5.tcp三次握手

第一次:A(SYN-SENT) ----> B(LISTEN)   SYN=1,seq=x,

第二次: B (SYN-RCVD)  ----> A   SYN=1,ACK=1,seq=y,ack=x+1

第三次:A(ESTABLISHED) ----> B(ESTABLISHED)   ACK=1,seq=x+1,ack=y+1

ACK是用来确认是否接收到了数据

Seq 是用来排序,用来最后将tcp传输的包进行排序,

同时防止丢包后,重新发缺少序号的包

网络方面的一些知识点
网络方面的一些知识点

server 收到 client 的SYN,回复SYN-ACK的后,为再收到client 发来的 ACK包,sever则会不断重试请求直至超时,liunx默认等待是63秒才断开连接,差不多5次

会造成 SYN Flood的防护措施

SYN队列满了后,通过tcp_syncookies参数回发SYN Cookie

若为正常连接则Client会回发SYN Cookie,直接建立连接

建立连接后,client出现故障:

保活机制(keep alive time)

1.向对方发送保活探测报文,如果未收到响应则继续发送

  尝试次数达到保活探测数仍未响应则应中断连接。

TCP 四次挥手

第一次: A---->B FIN=1,seq=u

第二次:  B---->A ACK=1,seq=v,ack=u+1

第三次:  B---->A FIN=1,ACK=1,seq=w,ack=u+1

第四次:  A---->B ACK=1,seq=u+1,ack=w+1

网络方面的一些知识点
网络方面的一些知识点

为什么会有TIME_WAIT状态

确保有足够的时间让对方收到ACK包

避免新旧连接混淆

服务器出现大量CLOSE_WAIT状态的原因

对方关闭socket连接,我方忙于读或写,没有

及时关闭连接

 检查代码,特别是释放资源的代码

 检查配置,特别是处理请求的线程配置

 linux 命令:netstat

 UDP协议

 没有报错重传,滑动窗口

 面向非连接

 不维护连接状态,支持同时向多个客户端传输相同的消息

 数据包报头只有8个字节,额外开销较小

 吞吐量只受限于数据生成速率、传输速率以及机器性能

 不拆分或者合并报文

 TCP与UDP 区别

 面向连接 VS 无连接

 可靠性

 有序性

 速度

 量级

 TCP的滑动窗口

 RTT 和 RTO

 RTT:发送一个数据包到收到对应的ACK,所花的时间

 RTO:重传时间间隔,需要根据RTT进行计算 

 TCP使用滑动窗口做流量控制与乱序重排

 保证TCP的可靠性

 保证TCP的流控特性 

 可靠性是通过滑动窗口的确认重传机制

 HTTP:

 http协议的主要特点:

 支持客户/服务器模式

 简单快速

 灵活

 无连接

 无状态

 在浏览器地址栏输入url,之后经历的流程

 1.DNS解析,根据URL 从 浏览器缓存,系统缓存,路由缓存等等找IP地址

 2.根据IP地址和对应的端口 建立TCP

 3.发送HTTP请求

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

 5.浏览器解析渲染页面

 HTTP状态码

 1xx : 指示信息-表示请求已接受,继续处理

 2xx :成功--表示请求已被成功接收、理解、接受

 3xx : 重定向--要完成请求必须进行更进一步的操作

 4xx :客户端错误--请求有语法错误或请求无法实现

 5xx :服务器端错误--服务器未能实现合法的请求

 200 成功

 400 客户端请求有语法问题

 401 请求未经授权

 404 没找到页面

 403 服务器接到请求,但拒绝服务

 500 服务器问题

 503 服务器当前不能处理客户端请求,一段时间后才能回复正常

 因为http是无状态的所以要引用 

 cookie 和 session

 cookie 是由服务器发给客户端的特殊信息,以文本

         的形式存放在客户端。

         客户端再次请求的时候,会把Cookie回发

         服务器接收到后,会解析Cookie生成与客户端

         相对应的内容

 session 服务器端的机制,在服务器上保存的信息

         解析客户端请求并操作session id,按需保存状态信息

         实现方式:使用cookie 或url 实现 jsessionID

cookie 更快  session 更安全

http 与 https 的区别

https 中包含了 

SSL :

    为网络通信提供安全及数据完整性的一种安全协议

    是操作系统对外的API

    采用身份验证 和 数据加密 保证安全

https数据的传输流程:

    浏览器将支持的加密算法信息发送给服务器

    服务器选择一套浏览器支持的加密算法,以证书的形式回发浏览器

    浏览器验证证书的合法性,并结合证书中的公钥加密

    信息发送给服务器

    服务器使用私钥解密信息,验证哈希,加密响应消息

    回发浏览器

    浏览器解密响应消息,并对消息进行验真,之后

    进行加密交互数据

https 需要到CA申请证书,Http 不需要

https 密文传输 , http 明文传输

https 默认使用443端口  http 默认使用80端口

socket

    ip+端口 唯一标示网络中的进程

继续阅读