计算机网路协议

158 阅读8分钟

背景

计算机模式的变化

起初计算机主要以单机的形式存在,计算机之间没有通信,而网络的出现才让计算机有了生命,信息的共享和交流让计算机成为了划时代的产物。大致可分为:

  • 局域网(LAN)

    某一区域内由多台计算机互连成的计算机组,一般在几公里范围之内。

  • 广域网(WAN)

    范围较大的区域,可以是一个单一个区域也可以是整个国家的计算机。

  • 无线局域网(WLAN)

    LAN的一种

协议分类

协议的重要性

不同的计算机之间通信需要协议的支持。

常用的协议

网络体系结构协议主要用途
TCP/IPIP,ICMP,TCP,UDP,HTTP,SNMP,SMTP,TELNET互联网,局域网
IPX/SPXIPX,SPX,NPC...个人电脑局域网
AppleTalkDDP,RTMP,AEP,ATP,ZIP苹果公司
DECnetDRP,NSP,SCP前DEC小型机
XNSIDP,SPP,PEP施乐公司网络
OSIFTAM,MOTIS,VT,CMIS/CMIP,CLNP,CONP

协议的标准

ISO制定的OSI,该标准对协议进行分层,每个分层可以独立使用,通过分层可以细分通信功能,更易于单独实现每个分层的协议,界定每个分层的责任和义务。

注:Tcp/Ip 由IETF制定

OSI模型

顺序分层名称大概功能
7应用层针对特定应用的协议
6表示层设备固有数据格式和网络标准数据格式的转换
5会话层通信管理,负责建立和新开通信连接
4传输层管理两个节点之间的数据传输(确保数据被可靠地传输到目的地)
3网络层地址管理与路由选择
2数据链路层互联设备之间传送和识别数据帧
1物理层以 0 1 代表电压的高低、灯光闪灭。界定连接器和网线的规格。

TCP/IP

顺序分层名称大概功能例子
5应用层网络应用程序以及应用曾协议存留的地方,应用层的信息分组称为报文HTTP,DNS,SMTP,FTP
4.传输层在应用层程序端点间传送应用层报文TCP,UDP
3.网络层负责将称为数据包的网络层分组从一台主机移动到另一台主机(包括IP协议)IP
2.数据链路层网络层通过源和目的之间的一些列路由器和路由数据包,为了将分组从一个结点移动到路径的下一个结点,网络层依靠数据链路层。链路层分组称为帧。
1.物理层该层的任务是将帧中的一个一个比特从一个结点移动到下一个结点双胶铜线,铜轴电缆,光纤(传输媒体)

image.png

网络层协议 IP

作用模块:IP寻址、路由以及IP分包与组包。

IP概述
IP地址在计算机通信中为了识别通信对端,必须要有一个类似于地址的识别码进行标识;网络层的IP,一般称为IP地址;IPv4由32位正整数表示
IP地址组成网络和主机两部分标识组成
IP地址分类ABCD类,分别对应的是以0,10,110,1110开头
广播地址
IP多播
子网掩码

路由概述
IP地址与路由控制
IP分包与组包
IPv6
DNS
ARP
ICMP
DHCP
NAT

传输层中的协议TCP UDP

tcp与udp主要差异

协议区别使用场景
TCP面向链接、可靠的流协议。具备:顺序控制、重发控制、流控制、拥塞控制、提高网络利用率等众多功能。传输层有必要实现可靠传输的情况。
UDP不具有可靠性的数据包协议,可以控制信息发送的大小,但不一定能保证信息一定会到达。高速传输和实时性场景。

tcp三次握手

  • 第一次握手:客户端发起,客户端将标志位SYN置为1,随机生成一个seq=J,并将该数据包发送给服务端,客户端进入SYN_SENT状态等待服务端确认。
  • 第二次握手:服务端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器将SYN和ACK都设置为1,ack=J+1,随机产生一个值seq=K,将该数据包发送给客户端以确认连接请求,服务器进入SYN_RCVD状态。
  • 第三次握手:客户端收到确认后,检查ack是否等于J+1,ACK是否为1,如果正确,将标志位ACk设置为1,ack=K+1,将数据包发送到服务端,服务端检查ack是否为K+1,ACK是否为1,正确则建立连接成功,客户端和服务端进入ESTABLISHED状态,开始传输数据。

tcp四次挥手

  • 双方都可以发起关闭
  • 第一次挥手:客户端发送FIN=M,用来关闭客户端到服务端的数据传送,客户端进入FIN_WAIT_1的状态。
  • 第二次挥手:服务端收到FIN后,先发送ack=M+1,客户端进入FIN_WAIT_2状态,继续等待服务端FIN报文。
  • 第三次挥手:服务端数据已发送完成,向客户端发送FIN=N报文,通知客户端数据传输完成,准备关闭。服务端进入LAST_ACK状态。
  • 第四次挥手:客户端收到FIN=N报文后,怕服务端不知道要关闭,发送ack=N+1后进入TIME_WAIT状态,若服务端没有收到ACK则重传,服务端收到ACK后断开连接。客户端等待2MSL后依然无回复,则证明服务器正常关闭,客户端也可以关闭连接。四挥完成。

应用层中的协议 HTTP

工作原理

HTTP协议采用了请求/相应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头和请求数据。服务器用状态行为作为相应,其内容包括协议的版本、成功或者错误代码、服务器信息、相应头部和相应数据。

步骤

  • 客户端连接到Web服务器
  • 发送HTTP请求
  • 服务器接受请求并返回HTTP响应
  • 释放TCP连接
  • 客户端浏览器解析HTML内容

请求方法

按照HTTP版本以及方法不同划分

HTTP版本方法具体
HTTP0.9GET1.拼接在URL后,不安全;2.数据较少1024B;3.只能进行URL编码;4.get有缓存;5.get产生一个数据包post产生两个
HTTP1.0POST向指定资源提交数据进行处理请求。数据被包含在请求体中。POST请求kennel会导致新的资源的建立和已有资源的修改。
HTTP1.0HEAD获取报头。
HTTP1.1OPPTIONS请求web服务器告知其支持的各种功能。询问服务器通常支持那些方法,或者对某些特殊资源支撑哪些方法。
HTTP1.1PUT从客户端向服务器传送的数据取代制定的文档内容。
HTTP1.1DELETE请服务器删除请求URL所指定的资源。客户端应用程序无法保证删除操作一定会被执行。
HTTP1.1TRACE诊断、验证请求是否穿过了请求/相应链。查看代理和其他应用程序对用户请求所产生的效果。
HTTP1.1CONNECTHTTP/1.1协议中预留给能够将连续改为管道方式的代理服务器。

HTTP协议版本变更

HTTP版本主要变更
0.91.只支持GET;
2.仅能请求访问HTML格式的资源;
1.01.增加了POST和GET;
2.增加text/html、image/jpeg等;
3.请求和回应格式改变不支持keep-alive;
1.11.增加了持久连接;
2.增加管道机制-在同一个TCP里,允许多个请求同时发送,增加了并发行,改善了HTTP的效率(请求较多时对头阻塞);
3.分块传输编码-请求回应的头信息有Transfer-Encoding字段,由数量未定的数据块组成;
4.增加了PUT、PATCH、OPTIONS、DELETE
5.支持文件端点续传、新增24哥错误状态码
HTTP/2.01.增加双工模式-解决队头阻塞,增加服务器推送
2.二进制协议-头信息和数据体都是二进制,且称为帧:头信息帧和数据帧
3.数据流-HTTP/2的数据包不是按顺序发的,用流ID来标识
4.头信息压缩-使用gzip/copress压缩后再发送;客户端和服务端共同维护一张头信息表,所有字段存入此表,生成索引号,发送索引号而非字段
5.服务器推送

特点

  • 简单快速:客户端向服务器请求时只需传递请求方法和路径。
  • 灵活:允许传输人意类型的数据对象。
  • 无状态:该协议是无状态的,对于事务处理能力是没有记忆能力的。

WebSocket

特点

  • 双向通信协议,基于TCP来传输数据。
  • 握手后才能通讯,协议头部不是很大,数据格式比较轻量,性能开销小,通信高效。
  • 可以发送文本,也可以发送二进制数据。
  • 没有同源限制,客户端可以与任意服务器通信。

事件

  • open
  • message
  • error
  • close

方法

  • send
  • close

小结

网络协议最基本的还是基于OSI/TCP/IP模型,日常用的到的大概就是这些,了解清楚更助于工作效率,学到老活到老。