计算机网络通信协议

计算机网络通信协议

文章目录

    • 计算机网络通信协议
      • 一、计算机网络通信
        • 1、什么是通信协议
        • 2、协议的标准
      • 二、TCP/IP协议群
        • 1、什么是TCP/IP协议群
        • 2、什么是应用协议
        • 3、什么是传输协议
        • 4、什么是网际协议
      • 三、TCP协议的特点
        • 1、三次握手
        • 2、断开连接时四次挥手
        • 3、服务端口
        • 4、数据包处理
      • 四、HTTP协议
        • 1、HTTP协议简介
        • 2、URI、URL、URN的关系
        • 2、HTTP的请求
        • 3、MIME类型

一、计算机网络通信

计算机网络通信就是指网络中两台计算机进行通信。

1、什么是通信协议

通信协议就是计算机之间通过网络实现通信必须遵守的一组规则和约定;这种约定解决了不同操作系统不同硬件组成的计算机之间,只要遵守相同的协议就可以实现通信。

2、协议的标准

现在的协议标准主要常见的有三种:

  • ios(国际标准化组织)在1978年提供了OSI/RM七层模型
  • TCP/IP五层模型
  • TCP/IP四层模型
  • 虽然他们的层级发生了变化,但是他们的具体组件没有发生变化只是表示上面发生变化

计算机网络通信协议_第1张图片

TCP/IP模型与OSI模型的对比

计算机网络通信协议_第2张图片

OSI模型的作用

计算机网络通信协议_第3张图片

二、TCP/IP协议群

1、什么是TCP/IP协议群

从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP(传输控制协议) 和 IP(网际互连协议) 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都 属于 TCP/IP 协议。他们与 TCP 或 IP 的关系紧密,是互联网必不可 少的组成部分。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网络协议群。

2、什么是应用协议

应用协议是定义了运行在不同系统上的应用程序进程如何相互传输报文的协议。

常见的应用程序:

  • FTP协议
    • 文件传输协议,是用于在网络中进行文件传输的一套标准协议
  • HTTP协议
    • 一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应
  • DNS协议
    • 域名系统,在万维网中作为域名和ip地址相互映射的一个分布式数据库,使用户更方便的访问互联网,访问互联网不用去记住ip地址
  • SNMP协议
    • 简单网络管理协议。专门设计用于在 IP 网络管理网络节点(服 务器、工作站、路由器、交换机及HUBS等)的一种标准协议, 它是一种应用层协议。
3、什么是传输协议

传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道,就是对底层进行了封装。

常见的传输协议

  • TCP协议
    • 传输控制协议,TCP是一种面向连接的、可靠的、基于字节流的传输层,是提供可靠的协议
  • UDP协议
    • 数据报文协议,是不可靠的协议,虽然可以确保发送信息的大小,却不能保证一定到达。
  • TCP协议和UDP
    • TCP需要建立连接是可靠的,UDP不需要建立连接是不可靠
    • TCP是一对一,UDP可以一对多
    • TCP消耗的资源大,UDP消耗的资源小
    • 所以TCP的实时性不高、UDP的实时性高
4、什么是网际协议

网际协议是一个网络层协议,它包含寻址信息和控制信息,可使数据包在网络中路由

常见的网际协议:

  • IP协议
    • 网际互连协议,它主要完成两个任务,一个是寻找地址,第二个是管理分割数据片。
  • ICMP协议
    • ICMP 的主要功能包括,确认 IP 包是否成功送达目标地址,通知 在发送过程当中 IP 包被废弃的具体原因,改善网络设置等。
  • ARP协议
    • 地址解析协议,是IP地址解析成对应的MAC地址

三、TCP协议的特点

TCP是一个可靠的传输协议,在创建连接时会经历三次握手,在断开连接时会经历四次挥手。

1、三次握手

三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共 发送三个包以确认连接的建立。

计算机网络通信协议_第4张图片

  • 第一次握手:客户端发送 SYN报文,并进入 SYN_SENT状态,等 待服务器的确认;
  • 第二次握手:服务器收到 SYN报文,需要给客户端发送 ACK 确 认报文,同时服务器也要向客户端发送一个 SYN 报文,所以也 就是向客户端发送 SYN + ACK 报文,此时服务器进入 SYN_RCVD状态;
  • 第三次握手:客户端收到 SYN + ACK报文,向服务器发送确认 包,客户端进入 ESTABLISHED 状态。待服务器收到客户端发送 的 ACK 包也会进入 ESTABLISHED状态,完成三次握手。

TCP建立连接时要传输三个数据包,俗称三次握手(Three-way Handshaking)。可以形象的比喻为下面的对话:

  • 设备A:“你好,设备B,我这里有数据要传送给你,建立连接吧。
  • ” 设备B:“好的,我这边已准备就绪。
  • ” 设备A:“谢谢你受理我的请求。”
2、断开连接时四次挥手

四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端 和服务端总共发送4个包以确认连接的断开。当我们的应用程序不需 要数据通信了,就会发起断开 TCP 连接。建立一个连接需要三次握 手,而终止一个连接需要经过四次挥手。

计算机网络通信协议_第5张图片

  • 第一次挥手。客户端发起 FIN包(FIN = 1),客户端进入 FIN_WAIT_1 状态。TCP 规定,即使 FIN包不携带数据,也要消 耗一个序号。
  • 第二次挥手。服务器端收到 FIN包,发出确认包 ACK(ack = u + 1),并带上自己的序号 seq=v,服务器端进入了 CLOSE_WAIT 状态。这个时候客户端已经没有数据要发送了,不过服务器端有 数据发送的话,客户端依然需要接收。客户端接收到服务器端发 送的 ACK后,进入了FIN_WAIT_2状态。
  • 第三次挥手。服务器端数据发送完毕后,向客户端发送FIN包 (seq=w ack=u+1),半连接状态下服务器可能又发送了一些数 据,假设发送 seq 为 w。服务器此时进入了 LAST_ACK状态。
  • 第四次挥手。客户端收到服务器的 FIN包后,发出确认包 (ACK=1,ack=w+1),此时客户端就进入了TIME_WAIT状 态。注意此时 TCP 连接还没有释放,必须经过2*MSL后,才进 入CLOSED状态。而服务器端收到客户端的确认包ACK后就进入 了CLOSED状态,可以看出服务器端结束 TCP 连接的时间要比客 户端早一些。

断开连接需要四次握手,可以形象的比喻为下面的对话:

  • 设备A:“任务处理完毕,我希望断开连接。
  • ” 设备B:“哦,是吗?请稍等,我准备一下。” 等待片刻后……
  • 设备B:“我准备好了,可以断开连接了。
  • ” 设备A:“好的,谢谢合作。”
3、服务端口

端口作用

  • 端口用来识别计算机中进行通信的应用程序。因此,它也被称为程序地址。
  • 每一个端口都对应着一个应用程序,一个端口只能对应着一个应用程序。

端口分配

操作系统中一共提供了0~65535可用端口范围。

按端口号分类:

  • 公认端口(Well Known Ports):从0到1023,它们紧密绑定 (binding)于一些服务。通常这些端口的通讯明确表明了某种服务 的协议。例如:80端口实际上总是HTTP通讯。
  • 注册端口(Registered Ports):从1024到65535。它们松散地绑 定于一些服务。也就是说有许多服务绑定于这些端口,这些端口同 样用于许多其它目的。例如:许多系统处理动态端口从1024左右开 始。
4、数据包处理

通信传输中的数据单位,一般也称“数据包”。在数据包中包括: 包、帧、数据包、段、消息。

数据包一般分为两部分,一部分时协议所用到的头部,另外一部分时数据。

数据包的处理

就是一个发送需要装包,用户接送了需要拆包获取数据。

计算机网络通信协议_第6张图片

四、HTTP协议

1、HTTP协议简介

http协议(超文本传输协议)是一个简单的请求-响应协议,是一个基于TCP/IP通信协议来传递数的。

http协议发展和版本

  • 1991发布了第一个版本0.9
  • 1996年发布了1.0版本
  • 199年发布了1.1版本(目前广泛使用的)
  • 2015年发布了2版本
2、URI、URL、URN的关系
  • URl:统一资源标识符,是一个用于标识互联网某个唯一资源的字符串名称(它是URL和URN的父集),它是个纯粹的语法结构,他不属于定位符,因为根据该标识符无法定位任何资源。
  • URL:统一资源定位符,可以帮助我们定位互联网的唯一资源。
    • 格式,传输协议://服务器(通常为域名或ip地址):端口号/请求资源路径?传递数据1&传递数据2
  • URN统一资源名称,其目的是通过提供一种途径,用于在特定的命名空间资源的标识,以补充网址。这种基本现在已经被淘汰了,主要还用在图书的isb编号上面。
2、HTTP的请求

请求状态分析(request):消息分为3部分,第一部分请求行,第二部分请求头(key:value格式),第三部分请求体,请求行和请求体中有一个空行

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:

计算机网络通信协议_第7张图片

请求方式

一般通常使用有两种:

  • GET方式,向指定的资源发出"显示请求",就是直接在上面地址栏请求,他只包含(请求行、请求头)两部分;只支持字符请求,可以被浏览器缓存。
  • POST,向指定资源提交数据,请求服务器进行数据处理(例如提交表单或者上传文件);支持字符和字节请求,默认为字符请求,默认情况下不会被浏览器缓存。

GET和POST的区别(重要,面试常问)

  • GET会被浏览器缓存,POST不会被浏览器缓存,所以浏览器回退是无害的,而POST就会再次请求
  • GET请求是在地址栏通过URL传递请求是”显示“,POST放在请求体中请求;
    • 所以get传递的参数是有限的(一般是不超过2k),参数会暴露,参数也会被保存在浏览器历史中则安全性差。
    • post就不会出现这些问题。
  • 区别2
    • get是期望从服务器拿到数据,真正的使用的时候其实是不会用来传输数据的,所以他对于服务器来说是绝对安全的;
    • post是用来向服务器提交数据的,一般情况下,服务器会拦截或监听Post请求,所以有可能post传输数据是有可能会被盗窃。从这个角度出发他的安全性就比较差了。

响应状态分析

响应消息也由三部分组成:响应行(http版本和状态码组成)、响应头、响应体。

计算机网络通信协议_第8张图片

响应状态码

状态码 描述
1XX 指示信息—>表示请求已接收,继续处理
2XX 成功—>表示请求已被成功接收,理解,接收
3XX 重定向—>要完成请求必须进行更进一步的操作
4XX 客户端错误—>请求有语法错误或者请求无法实现
5XX 服务端错误—>服务器未能实现合法的请求

常见的状态码

  • 200 - 请求成功,已经正常处理完毕
  • 301 - 请求永久重定向,转移到其它URL
  • 302 - 请求临时重定向 304 - 请求被重定向到客户端本地缓存
  • 400 - 客户端请求存在语法错误
  • 401 - 客户端请求没有经过授权
  • 403 - 客户端的请求被服务器拒绝,一般为客户端没有访问权限
  • 404 - 资源未找到,客户端请求的URL在服务端不存在
  • 500 - 服务端出现异常
3、MIME类型

什么是MIME类型

设定某种扩展名的文件用一种应用程序打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

MIME类型的作用

HTTP协议产生的响应中正文部分可以是任意格式的数据,那么如何保证接收方能看得懂发送方发送的正文数据呢?所以http协议采用了mime协议来规范正文的数据格式

MIME类型的使用

在服务器端我们可以设置响应头中的Content-Type的值来指定响应类型。

MIME类型对应列表

Type Meaning
application/msword Microsoft Word document
application/octet-stream Unrecognized or binary data
application/pdf Acrobat (.pdf) file
application/postscript PostScript file
application/vnd.lotus-notes Lotus Notes file
application/vnd.ms-excel Excel spreadsheet
application/vnd.ms-powerpoint PowerPoint presentation
application/x-gzip Gzip archive
application/x-java-archive JAR file
application/x-java-serialized-object Serialized Java object
application/x-java-vm Java bytecode (.class) file
application/zip Zip archive
audio/basic Sound file in .au or .snd format
audio/midi MIDI sound file
audio/x-aiff AIFF sound file
audio/x-wav Microsoft Windows sound file
mage/gif GIF image
mage/jpeg JPEG image
image/png PNG image
image/tiff TIFF image
image/x-xbitmap X Windows bitmap image
text/css HTML cascading style sheet
text/html HTML document
text/plain Plain text
text/xml XML
video/mpeg MPEG video clip
video/quicktime QuickTime video clip

你可能感兴趣的:(网络,tcp/ip,网络协议)