Python黑帽子-计算机网络基础

0xGeekCat · 2020-8-9 · 次阅读


计网体系结构

计网体系结构分为三种

  • OSI体系结构: 概念清楚,理念完整,但复杂,不实用
  • TCP / IP体系结构: 含一切构成互联网基础的网络协议,是Internet核心协议且广泛应用于局域网和广域网
  • 五层体系结构: 融合了OSI和TCP / IP体系结构,目的是为了学习和讲解计算机原理

image-20200322224808415

  • 低三层为通信子网,数据传输
  • 传输层承上启下
  • 高三层为资源子网,数据处理

TCP / IP体系结构

image-20200322225601208

image-20200322230344660

OSI体系结构

image-20200323120517137

TCP协议

Transmission Control Protocol 传输控制协议

  • 属于传输层通信协议
  • 基于TCP的应用层协议: HTTP、SMTP、FTP、Telnet、POP3

image-20200323212145819

报文段格式

TCP虽面向字节流,但传送的数据单元为报文段

TCP的报文段有2个字段

  • TCP首部字段
  • TCP数据字段

TCP首部字段

  • 前20字节固定、后面4n字符根据需要增加
  • TCP首部最小长度为20字节

image-20200323213604184

image-20200323213717368

TCP建立连接

image-20200323214601980

image-20200323215320296

TCP三次握手是为防止服务器端因接收早已失效的连接请求报文,从而一直等待客户端请求,最终导致形成死锁浪费资源

TCP释放连接

image-20200323220326999

image-20200323220617985

UDP协议

User Datagram Protocol 用户数据报协议

  • 属于传输层通信协议
  • 基于UDP的应用层协议: TFTP、SNMP、DNS

image-20200323121233291

优缺点

  • 优点:速度快
  • 缺点:消息易丢失

应用场景

要求通信速度快

  • 域名转换: DNS协议
  • 文件传输: FTP协议
  • 网络管理: SNMP协议
  • 远程文件服务器: NFS协议

报文段格式

UDP的报文段有2个字段

  • UDP首部字段
  • UDP数据字段

UDP首部字段

image-20200323122039122

image-20200323122102058

TCP和UDP的区别

image-20200323200342682

HTTP协议

image-20200323200723630

  • HTTP协议传输信息的基础是TCP / IP协议模型
  • HTTP协议属于应用层

image-20200323224139420

HTTP报文结构

image-20200323224433210

请求行结构

image-20200323224606567

GET、POST方法的区别

image-20200323224754928

HTTP 与HTTPS的区别

image-20200323225016552

Socket套接字

套接字是应用层与TCP / IP协议族通信的中间软件抽象层,表现为封装了TCP / IP协议族的编程接口

image-20200323201522161

  • Socket不是协议,而是一个编程调用接口,属于传输层
  • 一个Socket实例唯一代表一个主机上的一个应用程序的通信链路
  • 通过Socket,才能利用TCP / IP协议进行编程

TCP/IP协议的三种套接字类型

  • 流式套接字(SOCK_STREAM)
    流式套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流式套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议TCP
  • 数据报套接字(SOCK_DGRAM)
    数据报套接字提供了一种无连接的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据报套接字使用UDP协议进行数据的传输
  • 原始套接字(SOCK_RAW)
    原始套接字允许对较低层次的协议直接访问,比如IP、 ICMP协议,它常用于检验新的协议实现,或者访问现有服务中配置的新设备,因为RAW SOCKET可以自如地控制Windows下的多种协议,能够对网络底层的传输机制进行控制,所以可以应用原始套接字来操纵网络层和传输层应用。网络监听技术很大程度上依赖于SOCKET_RAW

原始套接字与标准套接字(标准套接字指流式套接字和数据报套接字)的区别

  • 原始套接字可以读写内核没有处理的IP数据包
  • 流式套接字只能读取TCP协议的数据,数据报套接字只能读取UDP协议的数据

浏览网页过程

image-20200323202021585

IPv4协议

image-20200324195851777

连接在Internet中的每一台主机或路由器的全球唯一的标识符

IPv4地址(32位) = 网络号 + 主机号

  • 网络号: 标志主机或路由器所连接到的网络,一个网络号在整个因特网范围内必须是唯一的
  • 主机号: 标志该主机或路由器,一个主机号在它所属的网络号的网络范围中必须是唯一的

不同类型的IP地址,主机号和网络号所占字节数不同

image-20200323203546864

image-20200323203845141

有一些IP地址用于特殊用途,不能用于做主机IP地址

image-20200323204145970

ICMP协议

Internet Control Message Protocol 网际控制报文协议

  • 属于IP协议
  • 非高层协议,而是作为IP层数据报的数据,加上数据报首部,组成IP数据报
  • 可以更有效地转发IP数据包,提高交付成功率

主要应用

  • Ping 分组网间探测
  • Traceroute 跟踪1个分组从源点到终点的路径

ICMP内容包含数据非常复杂,但每条数据都包含三个固定的字段

  • 数据类型
  • 代码值
  • 校验和

数据类型代码值包含主机接收到的ICMP信息类别,揭示正确解码ICMP信息的方法

ICMP数据包{数据类型: 3; 代码值: 3}表明目的不可达

目的不可达ICMP头结构

image-20200325151232823

IP和ICMP关系

image-20200325181552896

Ping

Packet InterNet Groper 分组网间探测

应用层直接使用网络层ICMP,无经过传输层的TCP、UDP

用于测试2个主机的连通性

Ping原理

  • 向目的主机发送多个ICMP回送请求报文
  • 根据目的主机返回的ICMP回送回答报文中的时间戳,计算出往返时间

image-20200323211243057

路由器与交换机的区别

image-20200323211453755

Cookie 与 Session

image-20200323211928610

image-20200323212008087