网络 TCP/IP、Http、Socket DNS

get与post请求的区别?请求方式不同 一个是拼接 一个是放在请求体中  post安全

http的连接流程:通过3次握手进行连接,传递数据,再通过4次挥手断开连接

http的特点:1无连接  2无状态

charles抓包原理?中间人攻击  服务器和客户端之间添加一个中间人,就可以获取修改数据。

http与https的区别?https是添加了ssl/tsl的安全协议  http属于应用层,ssl等于是插在应用层之下传输层之上的一个安全协议

tcp/ip并不属于协议,而是一些协议的统称

tcp为啥要进行三次握手? 因为如果进行两次握手的话,当第二次服务器返回给客户端信息后,此时连接已经建立,但是此时如果客户端连接超时,会重新给服务器发送连接请求,就会造成2次连接,所以需要在客户端收到服务器发送的信息后,在给服务器端回复一次。

tcp四次挥手?     因为tcp的链接是全双工的,每一条通道上面的链接都必须手动切断,当客户端接受完数据后,会给服务器发送切断请求,来终止这个链接,服务器会回复一条确认消息,之后进去半关闭状态,此时服务器扔可以给客户端发送信息,但是客户端不能给服务器发送消息,之后服务器再去请求关闭连接

tcp特点?1.按序到达  2.无差错  3.不丢失  4.不重复  (客户端每给服务器发送一条消息,服务器都会给客户端回复一条确认消息,当消息被篡改或者丢失的情况下,客户端可以启动重发丢失的信息)

tcp面向字节流:不管发送方一次发送多大的数据,tcp会自动把数据分成若干个字节进行发送

tcp慢开始拥塞避免方法:开始发送报文的时候第一次发送1个报文,后面呈指数递增发送报文,当达到一个门限值的时候,改成加法增长,当达到拥塞的时候重新开始,重新设置一个门限值。

http属于应用层的协议,tcp udp属于传输层的协议

网络连接依靠的是socket

http超文本传输协议 连接属于短连接,平时经常用到的是get请求和post请求,http1.0的时候是短连接,1.1的时候支持了长连接,主要是解决了1.0的时候每次请求都需要发送一堆数据包,影响性能的问题,1.1的时候可以可以发送多个请求

http并不能连接,他的连接依靠的是传输层,他只是规定了传输内容的协议。

socket则是对TCP/IP协议的封装和应用(程序员层面上)。也可以说,TPC/IP协议是传输层协议,主要解决数据 如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。

a)SOCKET连接与TCP/IP连接 

创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

socket则是对TCP/IP协议的封装和应用(程序员层面上)。也可以说,TPC/IP协议是传输层协议,主要解决数据 如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。关于TCP/IP和HTTP协议的关系,网络有一段比较容易理解的介绍:

“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如 果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也 可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP文本信息,然后使用TCP/IP做传输层协议将它发到网络上。”

我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。 实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以说,Socket的出现 只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、 listen、connect、accept、send、read和write等等。网络有一段关于socket和TCP/IP协议关系的说法比较容易理解:

“TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。”

实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。socket是对端口通信开发的工具,它要更底层一些.

b)Socket连接与HTTP连接

由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。

而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。

http协议是应用层的协义

有个比较形象的描述:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

两个计算机之间的交流无非是两个端口之间的数据通信,具体的数据会以什么样的形式展现`是以不同的应用层协议来定义的`如HTTP`FTP`...

DNS:把我们输入的网络域名解码成ip地址(我们会在网页里键入www.baidu.com,但是电脑不会理解这串字符的含义。于是就把这串字符发送给DNS(域名解析系统),系统将地址解析119.75.217.109)

国内通用的DNS114.114.114.114 / 114.114.115.115 Google的DNS 8.8.8.8和8.8.4.4

DNS劫持:当访问一个域名的时候,需要向DNS服务器发送一条请求IP的请求,如果此请求被钓鱼劫持,那么就会返回1个假的IP,进而访问到假的网站。

cookie/session

你可能感兴趣的:(网络 TCP/IP、Http、Socket DNS)