计算机网络随手记录(主要记录了TCP与HTTP协议的使用场景,特点等内容)。HTTP,TCP,UDP

一,前言

以前虽然一直听说啥TCP/IP协议呀,http协议,FTP协议呀这些,但是一直没明白这些都是些啥东西,并且是什么关系

我们就需要先整体了解一下 目前常用的网络架构,然后再了解这些协议处于哪些位置,怎么个用法,以及它们自身的一些特点。最后有了这些基础,就可以自己看或者记一下面试题哪些。

二,网络模型

7层是指OSI七层协议模型,主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。
OSI是Open System Interconnect的缩写,意为开放式系统互联。

5层只是OSI和TCP/IP的综合,是业界产生出来的非官方协议模型,但是很多具体的应用。实际应用还是TCP/IP的四层结构。为了方便可以把下两层称为网络接口层。五层体系结构包括:应用层、运输层、网络层、数据链路层和物理层。

4层是指TCP/IP四层模型,主要包括:应用层、运输层、网际层和网络接口层。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三,OSI七层模型

在这里插入图片描述

在这里插入图片描述

四,TCP/IP四层模型

建立总体架构。想象一下OSI七层模型(物理层,数据链路层,网络层,传输层,会话层,表示层,应用层)与TCP/IP四层模型(物理层,数据链路层,网络层,传输层,应用层)。
我们常用的这些协议一般都是TCP/IP四层模型里面的协议。

而常用的协议就是位于TCP/IP四层模型里面的。
比如HTTP,SSH,FTP等协议在应用层,而TCP,UDP等协议则在传输层里面。
不同层级呢,发送端与接收端的对象与连接方式那些也不同。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

OSI七层和TCP/IP的区别

TCP/IP他是一个协议簇;而OSI(开放系统互联)则是一个模型,且TCP/IP的开发时间在OSI之前。
TCP/IP是由一些交互性的模块做成的分层次的协议,其中每个模块提供特定的功能;OSi则指定了哪个功能是属于哪一层的。
TCP/IP是五层结构,而OSI是七层结构。OSI的最高三层在TCP中用应用层表示。

五,协议

1,网络通信协议

什么是网络通信协议
通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时候需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一的规定,通信双方必须同时遵守才能完成数据的交换。

网络需要遵循的通信规则
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2,HTTP协议(超文本传输协议,B/S架构)

定义

超文本传输协议

HTTP协议 特点

(1)HTTP是一种 无状态保存协议。
HTTP协议自身不对请求和响应之间的通信状态进行保存,也就是说HTTP协议对于发送过的请求或响应都不做持久化处理。

HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了

cookie与session

客户端与服务器进行动态交互的Web应用程序出现之后,HTTP无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持HTTP连接状态的技术就应运而生了,一个是Cookie,而另一个则是Session。HTTP本身是一个无状态的连接协议,为了支持客户端与服务器之间的交互,我们就需要通过不同的技术为交互存储状态,而这些不同的技术就是Cookie和Session了。
Cookie是通过客户端保持状态的解决方案。从定义上来说,Cookie就是由服务器发给客户端的特殊信息,而这些信息以文本文件的方式存放在客户端,然后客户端每次向服务器发送请求的时候都会带上这些特殊的信息。让我们说得更具体一些:当用户使用浏览器访问一个支持Cookie的网站的时候,用户会提供包括用户名在内的个人信息并且提交至服务器;接着,服务器在向客户端回传相应的超文本的同时也会发回这些个人信息,当然这些信息并不是存放在HTTP响应体(Response Body)中的,而是存放于HTTP响应头(Response Header);当客户端浏览器接收到来自服务器的响应之后,浏览器会将这些信息存放在一个统一的位置,对于Windows操作系统而言,我们可以从: [系统盘]:\Documents and Settings[用户名]\Cookies目录中找到存储的Cookie;自此,客户端再向服务器发送请求的时候,都会把相应的Cookie再次发回至服务器。而这次,Cookie信息则存放在HTTP请求头(Request Header)了。

HTTP的短链接和长连接(http1.0和1.1区别)

在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就 中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、 图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。

而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码: Connection:keep-alive

在使用长连接的情况下,当一个网页打开完成后, 客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭 ,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。 Keep-Alive不会永久保持连接 ,它有一个保持时间,可以在不同的服务器软件(如Apache )中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
HTTP协议的长连接和短连接,实质上是 TCP 协议的长连接和短连接

HTTP请求方法

HTTP/1.1 协议中共定义了八种方法(也叫 “ 动作 ” )来以不同方式操作指定的资源
GET
向指定的资源发出 “ 显示 ” 请求。使用 GET 方法应该只用在读取数据,而不应当被用于产生 “ 副作用 ” 的操作中,例如在 Web Application中。其中一个原因是 GET 可能会被网络蜘蛛等随意访问。
HEAD
与 GET 方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“ 关于该资源的信息 ” (元信息或称元数据)。
POST
向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。
PUT
向指定资源位置上传其最新内容。
DELETE
请求服务器删除 Request-URI 所标识的资源。
TRACE
回显服务器收到的请求,主要用于测试或诊断。
OPTIONS
这个方法可使服务器传回该资源所支持的所有 HTTP 请求方法。用 ‘*’ 来代替资源名称,向 Web 服务器发送 OPTIONS请求,可以测试服务器功能是否正常运作。CONNECT

相关问题

(1)在浏览器地址栏键入URL,按下回车之后可以看见页面,中间的流程是怎样的?

在浏览器地址栏键入URL,按下回车之后会经历以下流程:
在这里插入图片描述

  1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址 ;
  2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80 ,和服务器建立 TCP 连接 ;
  3. 浏览器发出读取文件 (URL 中域名后面部分对应的文件 ) 的 HTTP 请求,该请求报文作为 TCP 三次握手的第三个 报文的数据发送给服务器;
  4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器 ;
  5. 浏览器将该 html 文本并显示内容
(2)DNS怎样进行域名解析的?
(3)HTTP协议 请求响应步骤

客户端连接到Web服务器
一个 HTTP 客户端,通常是浏览器,与 Web 服务器的 HTTP 端口(默认为 80 )建立一个 TCP 套接字连接。 例如: http://www.baidu.com 。
发送HTTP请求
通过 TCP 套接字,客户端向 Web 服务器发送一个文本的请求报文,一个请求报文由 请求行、请求头部、空行和请求数据 4 部分组成。
服务器接受请求并返回HTTP响应
Web 服务器解析请求,定位请求资源。服务器将资源复本写到 TCP 套接字,由客户端读取。一个响应由 状态行、响应头部、空行和响应数据 4部分组成。
释放TCP连接
客户端浏览器解析HTML内容
客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若 干字节的HTML 文档和文档的字符集。客户端浏览器读取响应数据 HTML ,根据 HTML 的语法对其进行格式化,并在 浏览器窗口中显示。

补充两种不同架构

B/S 维护简单方便。开发、维护等几乎所有工作也都集中在服务器端,当企业对网络应用进行升级时,只需更新服务器端的软件就可以,这减轻了异地用户系统维护与升级。
而C/S对用户升级的时候,需要指令下发到每一个用户,会复杂一点。

HTTP协议和TCP协议比较

我这里只想记录一下http协议(应用层协议)与TCP协议(传输层协议)的特点。便于理解。
比如HTTP协议简单快速,灵活这些特点就不多说了哈,而且HTTP协议中的get请求还可以将参数放置在url中,也很方便。

HTTP协议与TCP协议的 数据收发方式

主要想描述的是HTTP协议与TCP协议的数据收发方式
先说总结,后面再进行解释吧:HTTP协议是无连接,B/S架构;TCP协议是长连接,C/S架构的

下面分为两点对两种不同的协议进行介绍:

  • 数据发送和接收的两边的对象
  • 不同连接方式。
    (哈哈哈,我主要只是想记录这这两点,其他上面都只是浅浅提一下)
1,数据发送和接收的两边的对象

HTTP协议:
请求:浏览器(B)
响应:服务器(S)

TCP协议:
请求:客户端(C)
响应:服务端(S)
或者
请求:服务端(S)
响应:客户端(C)

C/S架构:

在这里插入图片描述
传输层的TCP协议使用的是 C/S 架构,
(1)优点
优点呢是客户端直接与服务器相连接。
(2)缺点)
缺点就是由于越来越多的客户端直接与服务器进行连接,那么服务器后面可能会负载过大。

(又想补充一些内容:

怎么让客户端直接与服务器相连接的呢?
整体流程:
客户端 <—> 服务器
客户端会有IP地址和端口,若该客户端在服务器中,服务器会通过端口连接到该客户端。
同理,客户端也是根据服务器的IP和端口连接到服务器。
(只不过服务器可以有很多个端口,也就表明服务器可以连接到很多太设备。)
(这里又想到一个概念–>网关。不同网络之间进行连接都要通过网络,就像客户端与服务端进行连接也会先通过网关,然后再找到服务器中的端口进行连接。
一般来说,叫做给客户端设置IP地址和端口,服务端监听端口)

那么客户端和服务器成功连接之后,数据怎样发送过去呢
答案:通过TCP协议呀,协议就是规定了双方的一些操作要求,只要双方就遵守这个协议,就可以进行对应的效果呈现了。
就像显示生活中,遵守交通协议,汽车走汽车道,动车走动车轨道,遵守约定,才能将客户(数据)送往目的地。
而这个协议也和显示生活中的协议一样,有很多中的。而且每个行业还有自己其他特别的协议,使用很广泛。

常用于物联网中,也就是像平时我们使用的智能设备,比如家庭空调,家庭洗衣机,你可以手机上面软件对设备进行预约呀这些操作。
那么这些智能设备与手机你点击操作之间的信息通信,就是通过了服务器的,那么智能设备与服务器之间就是采用的上面介绍的那种连接方式。

所以,TCP协议C/S架构是端对端进行连接的。(C=client客户端,S=service服务器)

B/S架构

HTTP协议是B/S结构的,浏览器与服务器之间进行数据的发送与接收(B=browser浏览器,S=service服务器)
这个最常用的就是网页输入IP地址或者域名,你就可以访问到该网页了。

2,具体连接方式

不知道看到这里的人有没有注意到,我介绍HTTP协议是B/S结构时,描述的是“浏览器与服务器之间进行数据的发送与接收”,而不是向上面TCP协议一样描述的“客户端与服务端进行连接”。
关键字是“连接”。
因为HTTP协议是不需要客户端与服务器进行长连接的,HTTP一般说是浏览器与服务器进行短连接(也有很多地方说的是无连接的)。

也就是:
HTTP协议一般说的是请求与响应,限制每次连接只处理一个请求。服务器处理完客户(这里是浏览器)的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
TCP协议传输一般说的是客户端与服务端。也就是老生常谈的,为什么tcp要三次握手,四次挥手。三次握手就是在建立连接,四次挥手就是在断开连接。
(而且TCP这样子也保证了数据传输的实时性,一般也用在实时性较强的地方)

收发数据方面:
HTTP协议里,只能浏览器先发起请求。服务器接收到请求并进行响应。
TCP协议里,客户端与服务端双方都能发送请求,另外一方进行响应。

3,TCP协议(可靠)

4,UDP协议(不可靠)

TCP与UDP区别

在这里插入图片描述
最大区别:UDP的传输速率比TCP高,但是可靠性不如TCP。

浏览网页,查看视频,微信电话,传输文件
如何工作和实现基本的数据传输呢?

TCP和UDP,传输层协议,可以传输文件,视频,声音

TCP:打电话:强调建立连接之后的传输。(比如你发送”喂喂~“,对方会回你一个我“我听见了啦,不要喂喂喂了)
基于连接进行的传输。TCP建立连接的过程被称为三次握手。
建立连接:三次握手,
传输数据:
断开连接:四次挥手。

UDP:短信(发送短信出去,不确定对方是否收到)
使用QQ发送文字,(即使发送不出去,也会做一些尝试)

问题
(1)为什么挥手是三次,握手是四次?

为什么挥手是三次,握手是四次?
三次:最精简合理

六,网络分层安全隐患

1,物理层

● 攻击手段:a. 破坏光纤网线 b. 实时电子信号的干扰等● 防范手段:a. 物理设备的接入采用双线、双设备接入,保证物理线路和物理设备的可靠性,并处于监管的状态 b. 使用网屏的网线,也就是屏蔽网线 c. 接口处使用屏蔽的水晶头等

2,数据链路层

● 攻击手段 a. MAC 泛洪攻击泛洪攻击的实现方法就是通过伪造大量的未知 MAC 地址进行通信,交换机进行不断的学习,很快 MAC 表就会被充满,这样正常的主机的 MAC 地址在经过老化之后,就无法再添加到 mac 地址表中,导致之后的数据都变成了广播。b. 基于 mac 地址的伪装欺骗● 防范手段:a. 限制交换机学习 MAC 地址的数量 b. 把交换机端口与主机 MAC 进行动态绑定

3,网络层

● 攻击手段:a. IP 分片攻击、ping of death(死亡之 ping)、IP 欺骗伪造攻击,其通性都是通过制造大量的无用数据包,对目标服务器或者主机发动攻击,使得目标对外拒绝服务,可以理解为 DDOS 或者是类 DDOS 攻击。b. ARP 欺骗 ARP(地址解析协议)是根据 IP 地址获取物理地址的一个 TCP/IP 协议。通常情况下,在 IP 数据包发送过程中会存在一个子网或者多个子网主机利用网络级别第一层,而 ARP 则充当源主机第一个查询工具,在未找到 IP 地址相对应的物理地址时,将主机和 IP 地址相关的物理地址信息发送给主机。与此同时,源主机将包括自身 IP 地址和 ARP 检测的应答发送给目的主机。如果 ARP 识别链接错误,这样的话 ARP 直接应用可疑信息,那么可疑信息就会很容易进入目标主机当中。ARP 协议没有状态,不管有没有收到请求,主机会将任何收到的 ARP 相应自动缓存。如果信息中带有病毒,采用 ARP 欺骗就会导致网络信息安全泄露。因此,在 ARP 识别环节,应加大保护,建立更多的识别关卡,不能只简单通过 IP 名进行识别,还需充分参考 IP 相关性质等。c. ICMP 欺骗 ICMP 协议也是因特网控制报文协议,主要用在主机与路由器之间进行控制信息传递。通过这一协议可对网络是否通畅、主机是否可达、路由是否可用等信息进行控制。一旦出现差错,数据包会利用主机进行即时发送,并自动返回描述错误的信息。该协议在网络安全当中是十分重要的协议。但由于自身特点的原因,其极易受到入侵,通常而言,目标主机在长期发送大量 ICMP 数据包的情况下,会造成目标主机占用大量 CPU 资源,最终造成系统瘫痪。● 防范手段 a. 对于一些洪攻击,启动限流策略,例如:针对同一 IP 限制 ICMP 报文的数量,超过数据就进行丢弃。b. 对于 ARP 欺骗可以在终端设备与路由器上使用双向 MAC 地址绑定的方式解决、也可以通过 PPPoE 认证

4,传输层

针对传输层的攻击主要是利用 TCP/UDP 协议进行攻击,而利用 TCP 协议攻击主要是利用 TCP 协议的三次握手机制,向目标主机或者服务器发送大量连接请求但是不对其进行响应,使得占用大量目标服务器主机资源,造成瘫痪的攻击方式。● 攻击手段 a. SYN Flood 攻击 b. ACK Flood 攻击 c. UDP Flood 攻击● 防护方式 a. 针对 SYN Flood 攻击,可以使用对 SYN 包进行监视、延缓 TCB 分配方法等方式 b. 对 ACK Flood 攻击,可以 ACK 报文速率进行统计,当 ack 报文速率超过阈值启动源认证防御 c. 对于 UDP Flood 攻击,可以使用特征匹配进行拦截

5,应用层

● 攻击手段 a. DNS Request Flood 攻击、Reply Flood 攻击、缓存投毒攻击 b. CC 攻击 c. 缓存溢出攻击 d. 针对 WEB 应用的攻击:CSRF、SQL 注入、网页篡改等● 防护手段:a. 针对 DNS 攻击,可以进行 IP 地址和 MAC 地址的绑定、对 DNS 数据包进行监测 b. 对于软件开发,要规范开发与测试的流程,预防常见漏洞发生并及时更新升级软件修复 BUGc. 在代码中需要对用户提交的数据进行合规校验

以上是我们介绍的网络层次结构模型,以及每一层对应的协议、功能、攻击手段以及防护手段。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值