TCP/IP协议是为了保证全球亿万台计算机能准确、无误的通信。
TCP/IP中分层是很重要的概念,每层完成不同的功能。分为应用层,传输层,网络层,数据链路层。分层的目的是为了层级之间的功能相对队里,互不影响。
TCP/IP通信数据流
HTTP是基于TCP/IP协议的应用层协议,它不涉及数据包的传输,主要规定了客户端和服务器端的通信协议,默认端口是80
IP协议的作用是将各种数据包准确无误的传递给对方,其中重要的条件是IP地址和MAC地址。由于IP地址是稀有资源,不可能每个人都有一个IP地址,所以我们通常的IP地址都是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址,而MAC地址是唯一的。
IP实现的两个基本功能:寻址和分段
寻址功能就是原地址和目标地址之间建立连接,需要使用ARP协议(Address Resolution Protocol),IP协议就是找到一条连接两台电脑的路径,从而完成数据的交互。
地址解析协议,ARP协议,是根据IP地址获取物理地址的一个TCP/IP协议。IP间的通信依赖MAC地址。在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时就会采用ARP协议,根据通讯放的IP地址就可以反查出对应的MAC地址,从而进行精确的定位,完成寻址的功能。
分段功能是为了适应不同网络对包的要求,对数据进行重新组装。
TCP协议就是将数据包安全的给对方,IP协议是找到对方的详细地址,分工不同,互不冲突。
TCP属于传输层,提供可靠的字节流服务。字节流类似于数据切割,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。可靠的传输服务是指,能够把数据准确可靠的传给对方。TCP协议为了更容易的传输大数据才将数据进行分割,而且TCP协议能够确认数据最终是否送达对方。
为了确保信息准确无误的送达,TCP采用了三次握手策略(three-way-handshaking)。TCP建立连接时需要三次握手,在关闭连接时还需要四次握手。 这部分占用了http请求过程的中大量时间,在高并发时,可以考虑优化这部分。
和HTTP协议一样是处于应用层的服务,提供域名到IP地址之间的解析服务。
1、可缓存:get请求能缓存,post请求不能;响应报文的状态码是可缓存的,包括:200, 203, 204, 206, 300, 301, 404, 405, 410, 414, and 501。
2、get是获取资源,post用于传输实体主体。
3、参数:get请求的参数在url里面,会被浏览器保存历史记录,post的请求数据在数据包里面,同时因为url只支持ASCII码,因此get的参数如果存在汉字就要先进性编码,post请求支持更多的编码类型且不对数据类型限制;post传输的数据比get的多;url的长度有限制,会影响get请求;
4、安全的HTTP方法不会改变服务器状态,也就说是只读的。所以get是安全的,post不是安全的。
5、幂等性:get是幂等的,post不是幂等的。
6、XMLHttpRequest: 在使用XMLHttpRequest时,post请求发送时,浏览器会先发送header再发送Data;get请求header和data一起发送。
XMLHttpRequest 是一个 API,它为客户端提供了在客户端和服务器之间传输数据的功能。它提供了一个通过 URL 来获取数据的简单方式,并且不会使整个页面刷新。这使得网页只更新一部分页面而不会打扰到用户。XMLHttpRequest 在 AJAX 中被大量使用。
200 OK,表示从客户端发来的请求在服务器端被正确处理。
204 No content,表示请求成功,但是想要报文不包含实体的主体部分。
206 Partial Content ,进行范围请求。
301 moved permanently 永久性重定向,表示自愿一杯分配了新的URL。
302 found 临时性重定向,表示自愿临时被分配了新的URL。
303 see other 表示资源存在着另一个URL,应使用GET方法获取资源。和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。
注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。
304 not modified 表示服务器允许访问资源,但因发生请求未满足条件的情况。
307 temporary redirect,临时重定向,和302含义相同。但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。
400 bad request 请求报文存在语法错误
401 unauthorized 表示没有权限
403 forbidden 表示对请求资源的访问被服务器拒绝
404 not found 表示在服务器上没有找到请求的资源
500 internal sever error 表示服务器端在执行请求时错误
503 service unavailable 表明服务器暂时处于超负载或正在停机维护,无法处理请求
HTTPS是HTTP建立在SSL/TLS安全协议上的。
在IOS中,客户端本地会存有CA证书,在HTTPS请求时,会首先向服务器获取公钥,获得公钥后会使用本地的CA证书验证公钥的正确性,然后通过正确的公钥加密信息发送给服务器,服务器会使用私钥解密信息。
SSL/TSL握手阶段分为五步:
HTTP和HTTPS的对比:
HTTP:无状态,协议对客户端没有状态存储;无连接,每次请求都会和服务器重新建立连接;基于请求和响应,由客户端发起,服务端响应;简单快速,灵活;使用明文,请求和响应不会对通信方进行确认,无法保证数据的完整性。
HTTPS:内容加密,采用混合加密技术,中间者无法直接查看明文内容;验证身份,通过证书认真客户端访问的是自己的服务器;保护数据完整性,放置传输的内容被中间人冒充或篡改。
常用的三个网络协议网络中不同的工作站,服务器之间能传输数据,源于协议的存在.随着网络的发展,不同
的开发商开发了不同的通信方式.为了使通信成功可靠,网络中的所有主机都必须使用同
一语言,不能带有方言.因而必须开发严格的标准定义主机之间的每个包中每个字中的每
一位.这些标准来自于多个组织的努力,约定好通用的通信方式,即协议.这些都使通信
更容易.
已经开发了许多协议,但是只有少数被保留了下来.那些协议的淘汰有多中原因---设
计不好、实现不好或缺乏支持.而那些保留下来的协议经历了时间的考验并成为有效的通
信方法.当今局域网中最常见的三个协议是MICROSOFT的NETBEUI、NOVELL的IPX/SPX和交叉
平台TCP/IP.
一:NETBEUI
NETBEUI是为IBM开发的非路由协议,用于携带NETBIOS通信.NETBEUI缺乏路由和网络
层寻址功能,既是其最大的优点,也是其最大的缺点.因为它不需要附加的网络地址和网
络层头尾,所以很快并很有效且适用于只有单个网络或整个环境都桥接起来的小工作组环
境.
因为不支持路由,所以NETBEUI永远不会成为企业网络的主要协议.NETBEUI帧中唯一
的地址是数据链路层媒体访问控制(MAC)地址,该地址标识了网卡但没有标识网络.路由
器靠网络地址将帧转发到最终目的地,而NETBEUI帧完全缺乏该信息.
网桥负责按照数据链路层地址在网络之间转发通信,但是有很多缺点.因为所有的广
播通信都必须转发到每个网络中,所以网桥的扩展性不好.NETBEUI特别包括了广播通信的
记数并依赖它解决命名冲突.一般而言,桥接NETBEUI网络很少超过100台主机.
近年来依赖于第二层交换器的网络变得更为普遍.完全的转换环境降低了网络的利用
率,尽管广播仍然转发到网络中的每台主机.事实上,联合使用100-BASE-T Ethernet,允
许转换NetBIOS网络扩展到350台主机,才能避免广播通信成为严重的问题.
二:IPX/SPX
IPX是NOVELL用于NETWARE客户端/服务器的协议群组,避免了NETBEUI的弱点.但是,
带来了新的不同弱点.
IPX具有完全的路由能力,可用于大型企业网.它包括32位网络地址,在单个环境中允
许有许多路由网络.
IPX的可扩展性受到其高层广播通信和高开销的限制.服务广告协议(Service Adver
tising Protocol,SAP)将路由网络中的主机数限制为几千.尽管SAP的局限性已经被智能路
由器和服务器配置所克服,但是,大规模IPX网络的管理员仍是非常困难的工作.
三:TCP/IP
每种网络协议都有自己的优点,但是只有TCP/IP允许与Internet完全的连接.TCP/IP
是在60年代由麻省理工学院和一些商业组织为美国国防部开发的,即便遭到核攻击而破坏
了大部分网络,TCP/IP仍然能够维持有效的通信.ARPANET就是由基于协议开发的,并发展
成为作为科学家和工程师交流媒体的Internet.
TCP/IP同时具备了可扩展性和可靠性的需求.不幸的是牺牲了速度和效率(可是:TCP
/IP的开发受到了政府的资助).
Internet公用化以后,人们开始发现全球网的强大功能.Internet的普遍性是TCP/IP
至今仍然使用的原因.常常在没有意识到的情况下,用户就在自己的PC上安装了TCP/IP栈
,从而使该网络协议在全球应用最广.
TCP/IP的32位寻址功能方案不足以支持即将加入Internet的主机和网络数.因而可能
代替当前实现的标准是IPv6.
2.1应用层协议2.1.1POP3协议
POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。
2.1.2FTP协议
文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议,它工作在 OSI 模型的第七层, TCP 模型的第四层, 即应用层, 使用 TCP 传输而不是 UDP, 客户在和服务器建立连接前要经过一个“三次握手”的过程, 保证客户与服务器之间的连接是可靠的, 而且是面向连接, 为数据传输提供可靠保证。
2.1.3HTTP协议
HTTP 协议一般指 HTTP(超文本传输协议)。超文本传输协议(英语:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是因特网上应用最为广泛的一种网络传输协议,所有的 WWW 文件都必须遵守这个标准。HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
2.1.4TeInet协议
Telnet协议是 TCP/IP协议 族中的一员,是Internet远程登录服务的标准协议和主要方式。 它为用户提供了在本地计算机上完成远程 主机 工作的能力。 在 终端 使用者的电脑上使用telnet程序,用它连接到 服务器 。
2.1.5SMTP协议
SMTP 的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。SMTP 认证,简单地说就是要求必须在提供了账户名和密码之后才可以登录 SMTP 服务器,这就使得那些垃圾邮件的散播者无可乘之机。增加 SMTP 认证的目的是为了使用户避免受到垃圾邮件的侵扰。
2.1.6Samba协议
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
2.1.7CIFS协议
CIFS 是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
2.1.8DHCP协议
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。默认情况下,DHCP作为Windows Server的一个服务组件不会被系统自动安装,还需要管理员手动安装并进行必要的配置。
2.1.9TFTP协议
TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69。
2.1.10SNMP协议
简单网络管理协议(SNMP) 是专门设计用于在 IP 网络管理网络节点(服务器、工作站、路由器、交换机及HUBS等)的一种标准协议,它是一种应用层协议。
2.1.11DNS协议
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
2.2传输层协议
2.2.1TCP协议
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。
2.2.2UDP协议
协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。RFC 768 [1] 描述了 UDP。Internet 的传输层有两个主要协议,互为补充。无连接的是 UDP,它除了给应用程序发送数据包功能并允许它们在所需的层次上架构自己的协议之外,几乎没有做什么特别的事情。面向连接的是 TCP,该协议几乎做了所有的事情。
2.3网络层协议
2.3.1IP协议
IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。
2.3.2ICMP协议
ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
2.3.3IGMP协议
Internet 组管理协议称为IGMP协议(Internet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。IGMP协议共有三个版本,即IGMPv1、v2 和v3。
2.3.4ARP协议
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。地址解析协议是建立在网络中各个主机互相信任的基础上的,局域网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。ARP命令可用于查询本机ARP缓存中IP地址和MAC地址的对应关系、添加或删除静态对应关系等。相关协议有RARP、代理ARP。NDP用于在IPv6中代替地址解析协议。
2.3.5RARP协议
反向地址转换协议(RARP:Reverse Address Resolution Protocol) 反向地址转换协议(RARP)允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。 RARP 可以使用于以太网、光纤分布式数据接口及令牌环 LAN
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)