互联网协议概览

Internet Protocol Suite

Posted by Wanglizhi on July 1, 2016

OSI七层模型及TCP/IP四层模型

OSI七层模型:是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。它是一个七层的、抽象的模型,不仅包括一系列抽象的术语或概念,也包括具体的协议。

TCP/IP四层模型:是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。

OSI七层模型和TCP/IP模型的对比示意图

OSI七层模型的简单介绍

应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP, HTTP, SNMP, FTP, SMTP, Telnet, DNS
表示层 数据格式化,代码转换,数据加密 没有协议
会话层 接触或建立与别的接点的联系 没有协议
传输层 提供端对端的接口,数据段(segment) TCP,UDP
网络层 为数据包选择路由,数据包(packet)路由器 IP, ICMP, RIP, OSPF, BGP, IGMP
数据链路层 传输有地址的帧,错误检测功能,帧(frame),网桥、交换机 SLIP, PPP, ARP, RARP, 帧中继
物理层 二进制形式在物理媒体上传输数据,中继器、集线器、网线 ISO2110, IEEE802

数据封装过程:

  • TCP头:TCP数据报,包含源端和目的端的端口号,用于寻找发端和收端的应用进程;

  • IP头:用于寻找网络中目的主机在逻辑网络中的位置;

  • LLC头:负责识别网络层协议,然后对它们进行封装。LLC报头告诉数据链路层一旦帧被接收到时,应当对数据包做何处理。它的工作原理是这样的:主机接收到帧并查看其LLC报头,以找到数据包的目的地,比如说,在网络层的IP协议。

  • MAC头:用于寻找主机在网络设备中的位置;

IP协议

IP:网络互联协议,是计算机网络互联通信而设计的协议;

IPv4报头:

  • A类地址:以0开头,第一个字节范围0-127;范围0.0.0.0到127.255.255.255

  • B类地址:以10开头,第一个字节范围128-191;范围128.0.0.0到191.255.255.255

  • C类地址:以110开头,第一个字节范围192-223;范围192.0.0.0到223.255.255.255

  • D类地址:以1110开头,第一个字节范围224-239;范围224.0.0.0到239.255.255.255

  • E类地址:以11110开头,第一个字节范围240-247;范围240.0.0.0到247.255.255.255

DNS 是域名系统 (DomainName System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

ARP协议(Address Resolution Protocol)

根据IP地址获取物理地址的一个TCP/IP协议。ARP列表是IP地址和MAC地址的对应关系,根据目的主机地址,源主机检查自己ARP列表;没有则发起ARP请求广播;收到请求并且包含该地址的主机先添加源主机,再把ARP包发送给源主机;源主机收到后添加目的主机的IP地址与MAC地址。

MAC地址是网卡决定的,是固定的。

RIP、OSPF、BGP认识

  路由信息协议(RoutingInformationProtocol,RIP)是一种使用最广泛的内部网关协议(IGP)。(IGP)是在内部网络上使用的路由协议(在少数情形下,也可以用于连接到因特网的网络),它可以通过不断的交换信息让路由器动态的适应网络连接的变化,这些信息包括每个路由器可以到达哪些网络,这些网络有多远等,RIP属于网络层。

  开放式最短路径优先(OpenShortestPathFirst,OSPF)是对链路状态路由协议的一种实现,是大中型网络上使用最为广泛的IGP(InteriorGatewayProtocol)协议,运作于自治系统内部。著名的迪克斯加算法被用来计算最短路径树。它使用“代价(Cost)”作为路由度量。链路状态数据库(LSDB)用来保存当前网络拓扑结构,它在同一区域中的所有路由器上是相同的。

  BGP(边界网关协议,BorderGatewayProtocol)是自治系统之间的路由选择协议,是互联网上一个核心的去中心化自治路由协议。

  BGP是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。BGP构建在EGP的经验之上。BGP系统的主要功能是和其他的BGP系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了AS互联的拓朴图并由此清除了路由环路,同时在AS级别上可实施策略决策。

DNS

  DNS(DomainNameSystem,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

TCP 和 UDP对比

TCP对应的协议:FTP、Telnet、SMTP、POP3、HTTP

UDP对应的协议:DNS、SNMP(简单网络管理协议)、TFTP(简单文件传输协议)、Ping命令、即时通信、在线视频、网络语音电话

TCP协议与UDP协议的区别:

  • 基于连接与无连接

  • 对系统资源的要求(TCP较多,UDP较少)

  • UDP程序结构较简单

  • 流模式与数据报模式

  • TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证

  • TCP通信提供了错误和流量控制机制,还负责建立连接、处理终止和中断的端对端通信控制

TCP协议三次握手和四次握手

三次握手:Client发送请求——Server回复ACK+SYN,分配资源,SYN是用来同步的——Client回复ACK,分配资源

四次握手:Client请求断开——Server回复ACK,将剩余数据传完——Server传完数据,准备关闭连接——Client回复ACK,并进入TIME_WAIT状态,2MSL后没收到回复则关闭,Server收到ACK即关闭连接

HTTP协议

主要特点:支持客户/服务器模式;简单快速;允许传输任意类型的数据对象;无连接,每次只能处理一个请求;无状态

HTTP请求三部分:请求行、消息报头、请求正文

请求方法:

  • GET     请求获取Request-URI所标识的资源

  • POST    在Request-URI所标识的资源后附加新的数据

  • HEAD    请求获取由Request-URI所标识的资源的响应消息报头

  • PUT     请求服务器存储一个资源,并用Request-URI作为其标识

  • DELETE  请求服务器删除Request-URI所标识的资源

  • TRACE   请求服务器回送收到的请求信息,主要用于测试或诊断

  • CONNECT 保留将来使用

  • OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

HTTP响应也由三部分组成:状态行、消息报头、响应正文

常见状态码:

  • 1xx:指示信息–表示请求已接收,继续处理

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

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

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

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

常见状态代码、状态描述、说明:

  • 200 OK      //客户端请求成功
  • 201 Created //请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回
  • 202 Accepted //服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。异步操作的场合
  • 301 redirect: 301 代表永久性转移(Permanently Moved)。
  • 302 redirect: 302 代表暂时性转移(Temporarily Moved )。 

  • 400 Bad Request  //客户端请求有语法错误,不能被服务器所理解

  • 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用

  • 403 Forbidden  //服务器收到请求,但是拒绝提供服务

  • 404 Not Found  //请求资源不存在,eg:输入了错误的URL

  • 500 Internal Server Error //服务器发生不可预期的错误
  • 502 Bad Gateway //作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

  • 503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
  • 504 Gateway Timeout //超时

HTTP 301和302对比:

302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回302代码,搜索引擎认为新的网址只是暂时的。 SEO 302好于301

301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。

POST与GET的区别

  • Get是从服务器上获取数据,Post是向服务器传送数据

  • Get把参数数据队列加到URL中,Post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER

  • Get传值数据量小,不能大于2KB;Post传送数据量较大,一般不受限制

  • Get安全性低,Post安全性较高

HTTPS握手过程:

HTTPS和HTTP的区别

  1. https协议需要到ca申请证书或自制证书。
  2. http的信息是明文传输,https则是具有安全性的ssl加密。
  3. http是直接与TCP进行数据传输,而https是经过一层SSL(OSI表示层),用的端口也不一样,前者是80(需要国内备案),后者是443。
  4. http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

参考:

互联网协议入门(一)

互联网协议入门(二)

OSI七层模型及TCP/IP四层模型

TCP/IP基础

程序员的自我修养(2)——计算机网络