Network basic

Network

架构

OSI - 7 Level

  • 应用层
  • 表示层
  • 会话层
  • 传输层(TCP/UDP、端口)
  • 网络层(逻辑地址IP)
  • 数据链路层(帧、MAC地址)
  • 物理层(比特流)

TCP/IP 4 Lavel

  • 应用层
  • 传输层(传输层)TCP面向连接可靠 UDP
  • 网际互连层(网络层)
  • 网络接口层(物理、数据链路)地址解析协议ARP:IP-MAC

A\B\C类网络

  • A 第一个数网络表示网段,剩下为内网分配1.0.0.0-126.255.255.255
  • B 两个网段数字128.0.0.0-192.255.255.255
  • C 前三个网段数字192.0.0.0-223.255.255.255

TCP

概念

  • 面向连接、可靠、基于字节流的传输层协议
  • 将数据流分割成报文段、数据包有序,收到需要ACK、未收到重传

TCP报文头

  • 套接字、socket:IP + PORT + 协议 = 唯一标识

  • sequence number

  • ack number

  • offset

  • reserved

  • tcp flags:URG\ACK\PSH\RST\SYN\FIN

    ACK:确认标志

    RST:重置连接

    SYN:同步序号,用于建立连接

    FIN:finish,用于释放连接

  • window

  • check奇偶校验

三次握手

全双工,建立连接

tcp3

syn flood攻击

首次握手,syn超时:

server收到client的syn,回复syn-ack,未收到ack

不断重试直到超时:linux63s

syn cookie机制:syn队列满后,通过tcp_syncookies参数回发syn cookie(seq)

攻击者不会响应

四次挥手

tcp4

Why time wait

  • 确保有足够时间让对方收到ACK
  • 避免新旧连接混淆

大量close wait

代码中忘记关闭连接

保活机制

发送保活探测,如果未收到继续发送

尝试次数达到上限中断连接

滑动窗口

RTT:发送一个包到收到对方回应的时间

RTO:重传时间间隔

  • 流量控制
  • 乱序重排

window

Sender:

1 sent&ack 2 sent&no ack 3 not sent&ready 4 not sent&not ready

window: 2 and 3

windowsend

Receiver:

1 received&ack 2 not received$ready to receive 3 not ready receive

window: 2

windowr

  • ack在接收端没有延时
  • 确认ack推动窗口滑动

UDP

  • 报文结构简单8字节
  • 面向非连接
  • 不维护连接状态,服务器可同时向多个客户机传送消息
  • 吞吐量大
  • 面向报文,不拆分合并
  • 不可靠
  • 无序
  • 速度快

HTTP

  • 超文本传输协议
  • 支持client/server模式
  • 简单快速、灵活,数据类型多样
  • 无连接(请求后连接关闭)
  • 无状态(无记忆)
  • 版本1.0/1.1(长连接技术)/2.0

报文结构

请求结构

  • 请求头:请求方法、URL、协议版本
  • 请求头部
  • 请求正文

响应结构

  • 状态行:协议版本、状态码、状态码描述
  • 响应头部
  • 响应正文

工作过程

  • 客户端连接web server
  • 发送http request
  • server接受请求并返回http response
  • 释放tcp连接

浏览器输入url后的过程

  • DNS解析
  • TCP连接
  • http request
  • http response
  • 浏览器渲染页面
  • 连接结束

状态码

  • 1xx:请求接受,继续处理
  • 2xx:成功
  • 3xx:重定向,跳转处理
  • 4xx:客户端错误
  • 5xx:服务端错误

Get&Post

Get请求放在URL,Post放在报文体

Get幂等安全、可被缓存

Cookie:以文本形式存在客户端,由服务器分发,存在请求头

Session:服务器端机制,保存状态生成session id

​ 使用cookie和url实现

HTTP&HTTPS

增加ssl层(http与tcp之间)

SSL:安全套接层 3.0:TLS

  • 身份认证
  • 数据加密

->浏览器将支持的算法发给server

<-server选择算法,并以证书形式发回

->浏览器验证证书合法性,并结合证书公钥加密发送给server

<-server通过私钥解密,验证哈希,加密响应消息发回

  • https需要ca证书
  • http为明文传输,https为密文传输
  • https默认443端口,http为80
  • https=http+加密+认证+完整性保护

Socket

  • Socket是对tcp/ip协议的抽象

socket

  • Copyrights © 2019-2020 Rex