软件测试面试-计算机 络

1.计算机 络

1. OSI 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为 络的标准框架。

层    作用    数据单位    协议
物理层    通过媒介传输比特,确定机械及电气规范    比特Bit    RJ45、CLOCK、IEEE802.3 (中继器,集线器)
数据链路层    将比特组装成帧和点到点的传递    帧Frame    PPP、FR、HDLC、VLAN、MAC ( 桥,交换机)
络层    负责数据包从源到宿的传递和 际互连    包PackeT    IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP(路由器)
传输层    提供端到端的可靠 文传递和错误恢复   段Segment    TCP、UDP、SPX
会话层    建立、管理和终止会话    会话协议数据单元    NFS、SQL、NETBIOS、RPC
表示层    对数据进行翻译、加密和压缩    表示协议数据单元    JPEG、MPEG、ASII
应用层    允许访问OSI环境的手段    应用协议数据单元    FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS

 

交换机与路由器有什么区别strong>

①工作所处的OSI层次不一样,交换机工作在OSI第二层数据链路层,路由器工作在OSI第三层 络层

②寻址方式不同:交换机根据MAC地址寻址,路由器根据IP地址寻址

③转发速不同:交换机的转发速度快,路由器转发速度相对较慢。

TCP/IP协议族:分层(4层): 络接口层、 际层、运输层、 应用层。
五层协议 (5层):物理层、数据链路层、 络层、运输层、 应用层。

数据传输的基本单位:传输层(TCP( 文段)UDP(用户数据包))、 络层(IP数据 或分组)、数据链路层(帧)、物理层(比特)

2.TCP和UDP的区别

TCP是传输控制协议,提供的是面向连接、可靠的字节流服务。通信双方彼此交换数据前,必须先通过三次握手协议建立连接,之后才能传输数据。TCP提供超时重传,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

UDP是用户数据 协议,是一个简单的面向无连接的协议。UDP不提供可靠的服务。在数据数据前不用建立连接故而传输速度很快。UDP主要用户流媒体传输,IP电话等对数据可靠性要求不是很高的场合。

 TCP是面向字节流的,UDP是面向 文的;

TCP ————————-     UDP
连接方式    面向连接的、可靠的数据流传输    //    非面向连接的、不可靠的数据流传输
通信方式    一对一、点对点  //     一对一、一对多、多对一、多对多
传输单位    TCP 文段   //   用户数据
对系统资源要求    较多(TCP的20个字节信息包),负载高,采用虚电路   //  较少(UDP信息包的标题很短,只有8个字节)
安全性    可靠,安全   //  数据传输快,但是不可靠(尽最大努力交付)
对应协议    FTP、Telnet、SMTP、POP3、HTTP    // DNS、SNMP、TFTP
TCP提供超时重发、丢弃重复数据、检验数据、窗口技术、流量控制等功能,保证数据能传到另外一端。
UDP常用于QQ等即时通讯软件(适合于实时通信,当 络阻塞时,不影响发送端的发送效率。

UDP是一个无连结的数据 协议。它是一个“尽力传递”(best effort)或者说“不可靠”协议——不是因为它特别不可靠,而是因为它不检查数据包是否已经到达目的地,并且不保证它们按顺序到达。如果一个应用程序需要这些特性,那它必须自行检测和判断,或者使用TCP协议。 UDP的典型性应用是如流媒体(音频和视频等)这样按时到达比可靠性更重要的应用,或者如DNS查找这样的简单查询/响应应用,如果创建可靠的连结所作的额外工作将是不成比例地大。

TCP对应的协议
(1) FTP:定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25 端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5) HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP对应的协议
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53 端口。
(2) SNMP:简单 络管理协议,使用161 端口,是用来管理 络设备的。由于 络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trival File Transfer Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
3.TCP三次握手和四次挥手的全过程
三次握手(我要和你建立链接;你真的要和我建立链接么;我真的要和你建立链接=> 成功)

 

第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

为什么会采用三次握手,若采用二次握手可以吗不可以

“三次握手”的目的是“为了防止已失效的连接请求 文段突然又传送到了服务端,因而产生错误”。 client发出的第一个连接请求 文段并没有丢失,而是在某个 络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的 文段。但server收到此失效的连接请求 文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认 文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送数据。但server却以为新的运输连接已经建立,并一直等待client发来数据。这样,server的很多资源就白白浪费掉了。采用“三次握手”的办法可以防止上述现象发生。例如刚才那种情况,client不会向server的确认发出确认。server由于收不到确认,就知道client并没有要求建立连接。主要目的防止server端一直等待,浪费资源。

四次挥手(我要和你断开链接;好的,断吧;我也要和你断开链接;好的,断吧)
与建立连接的“三次握手”类似,断开一个TCP连接则需要“四次握手”。
第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当然,在fin包之前发送出去的数据,如果没有收到对应的ack确认 文,主动关闭方依然会重发这些数据),但是,此时主动关闭方还可以接受数据。
第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序 为收到序 +1(与SYN相同,一个FIN占用一个序 )。
第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。
第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序 为收到序 +1,然后进入等待 TIME_WAIT 状态。被动方收到发起方的 文段以后关闭连接。发起方等待一定时间未收到回复,则正常关闭

TCP四次挥手 TIME_WAIT出现在哪, 为什么要有TIME_WAIT
为什么会采用四次挥手,若采用三次挥手可以吗p>

因为TCP有个半关闭状态,假设A.B要释放连接,那么A发送一个释放连接 文给B,B收到后发送确认,这个时候A不发数据,但是B如果发数据A还是要接受,这叫半关闭。然后B还要发给A连接释放 文,然后A发确认,所以是4次。

在tcp连接握手时为何ACK是和SYN一起发送,这里ACK却没有和FIN一起发送呢。原因是因为tcp是全双工模式接收到FIN时意味将没有数据再发来,但是还是可以继续发送数据。

====================================

因为关闭连接时,server端收到客户端的FIN 文,并不会立即关闭socket,只能先回复一个ACK告诉client我已经收到你的关闭请求了,同时可能server还有数据没传输完,只有等server端数据传输完成了 才能发送FIN 文,所以这个地方要分两次发送,这样就有了四次挥手。
-服务端的Time_Wait状态再哪个阶段出现多久么要设计这么一个状态r> timewait阶段是最后阶段发送确认收到server端的fin 文释放连接请求后回复给server端ack 文,之后client端就进入time_wait阶段.
持续多久即是 问为什么不马上关闭直接进入closed阶段,主要是考虑到 络的不可靠,假如client最后阶段发送给server端的ack 文由于 络原因丢失了server没收到呢,server端会重新发送fin 文过来,这个时候client端就要等.

HTTP:

URI和URL的区别:

URI是同一资源标志符,可以唯一标识一个资源

URL是同一资源定位符,可以提供该资源的路径,URL是URI的子集。

举个例子:

身份证 就是URI,通过身份证 让我们能且仅能确定一个人。

如果采用URL方式:动物住址协议://地球/中国/浙江省/杭州市/西湖区/某个大学/12宿舍楼/23

HTTP和HTTPS的区别

Http协议运行在TCP之上,明文传输,客户端和服务器都无法验证对方身份。Https是身披SSL(Secure Socket Layer)外壳的Http,运行于SSL上,SSL运行与TCP上,是添加了加密和认证机制的HTTP。

二者之间存在如下不同:

     端口不同:Http与Https使用了不同的连接方式,用的端口也不一样,前者是80,后者是443;

     资源消耗:和Http通信相比,Https通信由于加解密处理消耗更多的CPU和内存资源;

     开销:Https通信需要证书,而证书一般需要向认证机构购买;

共享密钥加密:

加密和解密都使用同一密钥的方式称为共享密钥方式称为共享密钥加密,也被称为对称密钥加密。

公开密钥加密:

公开密钥加密使用一对非对称的密钥,一把叫做私有密钥,另一把叫做公开密钥。发送密文的一方使用对方的公开密钥进行加密处理,对方接收到被加密的信息后,在使用自己的私有密钥进行解密。

HTTPS采用混合加密机制:HTTPS采用共享加密和公开加密两者并用的混合加密机制。因为公开密钥加密和共享密钥加密相比,处理速度慢,所以我们采用交换密钥环节使用公开密钥加密方式,之后的建立通信交换 文阶段则采用共享密钥加密方式

区别:

http是超文本传输协议,它时使用明文的方式发送我们的内容(没有任何的加密),比如我们访问了一个 址,我们需要在这个 址输入密码、登录账 之类的操作,我们的账 和密码就会发送到 址的服务器上面,但如果有人在中途截取了我们的信息,那么我们的重要的信息就暴露了,为了解决Http在传输中不加密的问题,之后就增加了一个SSL协议,这个协议提供 络连接的加密,如果我们访问一个https的 站,我们的电脑会先和服务器建立一个安全的连接通道,然后服务器会先发送一份 址的安全信息证书到我们的电脑,告诉我们的电脑,访问的服务器没有问题,确认了信息后,服务器就会生成一个加锁的箱子,但是这把锁有两把不一样的钥匙,一把时给我们的电脑的,一把是给服务器自己,然后服务器会把没有上锁的箱子和钥匙发给我们的电脑,我们把信息放在箱子里面然后用钥匙锁上,然后发给服务器,服务器用自己的钥匙打开箱子来保证信息的安全。

Http请求解析过程

浏览器输入一个连接,到展示到页面,经过了什么

      (1). 浏览器查询 DNS,获取域名对应的IP地址 :具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服务器进行查询等。对于向本地DNS服务器进行查询,如果要查询的域名包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析(此解析具有权威性);如果要查询的域名不由本地DNS服务器区域解析,但该服务器已缓存了此 址映射关系,则调用这个IP地址映射,完成域名解析(此解析不具有权威性)。如果本地域名服务器并未缓存该 址映射关系,那么将根据其设置发起递归查询或者迭代查询;

      (2). 浏览器获得域名对应的IP地址以后,浏览器向服务器请求建立链接,发起三次握手;

      (3). TCP/IP链接建立起来后,浏览器向服务器发送HTTP请求;

      (4). 服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果返回给浏览器;

      (5). 浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;

  (6). 浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

Session、Cookie 

Cookie和Session都是客户端与服务器之间保持状态的解决方案,具体来说,cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。

      (1). Cookie

Cookie实际上是一小段的文本信息。

Cookie的工作原理:客户端发送一个请求,服务器会为张三产生一个唯一的识别码,并以此作为索引在服务器的后端数据库生成一个项目,接着在给客户端的HTTP响应 文中添加了叫做Set-Cookie的首部字段信息,客户端会保存Cookie。当客户端第二次往服务器发送请求时,客户端会自动在请求 文中加入Cookie值后发送出去。服务器端发现客户端发送过来的Cookie后,会检查究竟是从哪个客户端发送来的连接请求,然后对比服务器上的记录,最后得到状态信息。

====================================================

客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie,而客户端浏览器会把Cookie保存起来。当浏览器再请求该 站时,浏览器把请求的 址连同该Cookie一同提交给服务器,服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

      (2). Session

      同样地,会话状态也可以保存在服务器端。客户端请求服务器,如果服务器记录该用户状态,就获取Session来保存状态,这时,如果服务器已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用;如果客户端请求不包含sessionid,则为此客户端创建一个session并且生成一个与此session相关联的sessionid,并将这个sessionid在本次响应中返回给客户端保存。保存这个sessionid的方式可以采用 cookie机制 ,这样在交互过程中浏览器可以自动的按照规则把这个标识发挥给服务器;若浏览器禁用Cookie的话,可以通过 URL重写机制 将sessionid传回服务器。

      (3). Session 与 Cookie 的对比

  •       实现机制:Session的实现常常依赖于Cookie机制,通过Cookie机制回传SessionID

  •       大小限制:Cookie有大小限制并且浏览器对每个站点也有cookie的个数限制,Session没有大小限制,理论上只与服务器的内存大小有关;

  •       安全性:Cookie存在安全隐患,通过拦截或本地文件找得到cookie后可以进行攻击,而Session由于保存在服务器端,相对更加安全;

  •       服务器资源消耗:Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。

4.IP地址

 IP地址是指互联 协议地址,是IP协议提供的一种统一的地址格式,它为互联 上的每一个 络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。IP地址编址方案将IP地址空间划分为A、B、C、D、E五类,其中A、B、C是基本类,D、E类作为多播和保留使用,为特殊地址。

      每个IP地址包括两个标识码(ID),即 络ID和主机ID。同一个物理 络上的所有主机都使用同一个 络ID, 络上的一个主机(包括 络上工作站,服务器和路由器等)有一个主机ID与其对应。

  • IP地址分为两个部分, 络 和主机 。
    A类地址:以0开头, 第一个字节范围:1~126(1.0.0.0 – 126.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类地址:以1111开头,保留
    其中A、B、C是基本类,D、E类作为多播和保留使用。

    以下是留用的内部私有地址:
    A类 10.0.0.0–10.255.255.255
    B类 172.16.0.0–172.31.255.255
    C类 192.168.0.0–192.168.255.255

    IP地址与子 掩码相与得到 络 :
    ip : 192.168.2.110
    &Submask : 255.255.255.0
    络 :192.168.2 .0
    注: 主机 ,全为0的是 络 (例如:192.168.2.0),主机 全为1的为广播地址(192.168.2.255)

      1). A类地址:1字节的

络地址 + 3字节主机地址, 络地址的最高位必须是“0”

      一个A类IP地址是指, 在IP地址的四段 码中,第一段 码为 络 码,剩下的三段 码为本地计算机的 码。如果用二进制表示IP地址的话,A类IP地址就由1字节的 络地址和3字节主机地址组成, 络地址的最高位必须是“0”。A类IP地址中 络的标识长度为8位,主机标识的长度为24位,A类 络地址数量较少,有126个 络,每个 络可以容纳主机数达1600多万台。

      A类IP地址的地址范围1.0.0.0到127.255.255.255(二进制表示为:00000001 00000000 00000000 00000000 – 01111110 11111111 11111111 11111111),最后一个是广播地址。A类IP地址的子 掩码为255.0.0.0,每个 络支持的最大主机数为256的3次方-2=16777214台。

      2). B类地址: 2字节的 络地址 + 2字节主机地址, 络地址的最高位必须是“10”

      一个B类IP地址是指,在IP地址的四段 码中,前两段 码为 络 码。如果用二进制表示IP地址的话,B类IP地址就由2字节的 络地址和2字节主机地址组成, 络地址的最高位必须是“10”。B类IP地址中 络的标识长度为16位,主机标识的长度为16位,B类 络地址适用于中等规模的 络,有16384个 络,每个 络所能容纳的计算机数为6万多台。

      B类IP地址地址范围128.0.0.0-191.255.255.255(二进制表示为:10000000 00000000 00000000 00000000—-10111111 11111111 11111111 11111111),最后一个是广播地址。B类IP地址的子 掩码为255.255.0.0,每个 络支持的最大主机数为256的2次方-2=65534台。

      3). C类地址: 3字节的 络地址 + 1字节主机地址, 络地址的最高位必须是“110”

      一个C类IP地址是指,在IP地址的四段 码中,前三段 码为 络 码,剩下的一段 码为本地计算机的 码。如果用二进制表示IP地址的话,C类IP地址就由3字节的 络地址和1字节主机地址组成, 络地址的最高位必须是“110”。C类IP地址中 络的标识长度为24位,主机标识的长度为8位,C类 络地址数量较多,有209万余个 络。适用于小规模的局域 络,每个 络最多只能包含254台计算机。

      C类IP地址范围192.0.0.0-223.255.255.255(二进制表示为: 11000000 00000000 00000000 00000000 – 11011111 11111111 11111111 11111111)。C类IP地址的子 掩码为255.255.255.0,每个 络支持的最大主机数为256-2=254台。

      4). D类地址:多播地址,用于1对多通信,最高位必须是“1110”

      D类IP地址在历史上被叫做多播地址(multicast address),即组播地址。在以太 中,多播地址命名了一组应该在这个 络中应用接收到一个分组的站点。多播地址的最高位必须是“1110”,范围从224.0.0.0到239.255.255.255。

      5). E类地址:为保留地址,最高位必须是“1111”

5.ARP和RARP
ARP地址解析协议
ARP是地址解析协议,作用是完成IP地址到硬件MAC地址的映射
工作流程:

(1)首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。

(2)当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本 段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。

(3)当本 络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。

(4)源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。

广播发送ARP请求,单播发送ARP响应。

RARP逆地址解析协议
RARP是逆地址解析协议,作用是完成硬件地址到IP地址的映射,主要用于无盘工作站,因为给无盘工作站配置的IP地址不能保存。
工作流程:在 络中配置一台RARP服务器,里面保存着IP地址和MAC地址的映射关系,当无盘工作站启动后,就封装一个RARP数据包,里面有其MAC地址,然后广播到 络上去,当服务器收到请求包后,就查找对应的MAC地址的IP地址装入响应 文中发回给请求者。因为需要广播请求 文,因此RARP只能用于具有广播能力的 络。
6.HTTP和HTTPS
HTTP协议:超文本传输协议,是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。

7.浏览器请求
【在浏览器中输入www.baidu.com后执行的全部过程】

客户端浏览器通过DNS解析到www.baidu.com 的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览器发起一个HTTP会话到220.181.27.48,然后通过TCP进行封装数据包,输入到 络层。
在客户端的传输层,把HTTP会话请求分成 文段,添加源和目的端口,如服务器使用80端口监听客户端的请求,客户端由系统随机选择一个端口如5000,与服务器进行交换,服务器把相应的请求返回给客户端的5000端口。然后使用IP层的IP地址查找目的端。
客户端的 络层不用关心应用层或者传输层的东西,主要做的是通过查找路由表确定如何到达服务器,期间可能经过多个路由器,这些都是由路由器来完成的工作,我不作过多的描述,无非就是通过查找路由表决定通过那个路径到达服务器。
客户端的链路层,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包现在就可以传输了,然后发送IP数据包到达服务器的地址。
8.cookie,session区别,应用场景
保存登录状态用什么okie ,Session

Cookie 是在HTTP协议下,服务器或脚本可以维护客户工作站上信息的一种方式。Cookie信息,可以看作是浏览器缓存。
Session可以代表服务器与浏览器的一次会话过程,指从一个浏览器窗口打开到关闭的这个期间.也可以用于指一类用来在客户端与服务器之间保持状态的解决方案.

cookie机制采用的是在客户端保持状态的方案
session机制采用的是在服务器端保持状态的方案。
同时由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择,比如说重写 URL和隐藏表单域。

session比cookies更安全,比如把用户名密码保存在浏览器,下一个用户登录会暴露信息,session占用资源也更多。其他不记得了

一般来说,登陆验证信息,客户的私人信息,如姓名,电话等,应该放在Session中.
Cookie则用于用户登陆 站时的自动登陆以及类似”购物车”的处理.使用Cookie保存信息时最好通过加密形式来保存数据,同时是否保存登陆信息,需要由用户自行选择。

当你在面试中被问到这个问题,你的内心充满了自信和喜悦,你轻轻松松的给出了一个“标准答案”:
GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET参数通过URL传递,POST放在Request body中。(本标准答案参考自w3schools)

“很遗憾,这不是我们要的回答!”

GET和POST是什么pan style=”color:#7c79e5;”>HTTP协议中的两种发送请求的方法。
HTTP是什么TP是基于TCP/IP的关于数据如何在万维 中如何通信的协议。
HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

GET和POST还有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包。
长的说:
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化 站性能。但这是一个坑!跳入需谨慎。为什么p>

GET与POST都有自己的语义,不能随便混用。
据研究,在 络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在 络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。
Socket通信流程
套接字是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨 络进行,Linux所提供的功能(如打印服务,ftp等)通常都是通过套接字来进行通信的,
套接字的创建和使用与管道是有区别的,因为套接字明确地将客户和服务器区分出来,套接字可以实现将多个客户连接到一个服务器。
套接字是支持TCP/IP的 络通信的基本操作单元,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。
简单的举例说明:Socket=Ip address+ TCP/UDP + port。

1. 面向连接的套接字Socket通信工作流程
为了实现服务器与客户机的通信,服务器和客户机都必须建立套接字。服务器与客户机的工作原理可以用下面的过程来描述。

1.服务器先用 socket 函数来建立一个套接字,用这个套接字完成通信的监听。
2.用 bind 函数来绑定一个端口 和 IP 地址。因为本地计算机可能有多个 址和 IP,每一个 IP 和端口有多个端口。需要指定一个 IP 和端口进行监听。
3.服务器调用 listen 函数,使服务器的这个端口和 IP 处于监听状态,等待客户机的连接。
4.客户机用 socket 函数建立一个套接字,设定远程 IP 和端口。
5.客户机调用 connect 函数连接远程计算机指定的端口。
6.服务器用 accept 函数来接受远程计算机的连接,建立起与客户机之间的通信。
7.建立连接以后,客户机用 write 函数向 socket 中写入数据。也可以用 read 函数读取服务器发送来的数据。
8.服务器用 read 函数读取客户机发送来的数据,也可以用 write 函数来发送数据。
9.完成通信以后,用 close 函数关闭 socket 连接。

2.面向无连接的套接字Socket通信工作流程
无连接的通信不需要建立起客户机与服务器之间的连接,因此在程序中没有建立连接的过程。
进行通信之前,需要建立 络套接字。服务器需要绑定一个端口,在这个端口上监听接收到的信息。客户机需要设置远程 IP 和端口,需要传递的信息需要发送到这个 IP 和端口上。

原文链接:https://blog.csdn.net/weixin_42490152/article/details/99694247

 

文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树认识身边的计算机 络常见的 络设备23004 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年10月24日
下一篇 2019年10月25日

相关推荐