Skip to content

Latest commit

 

History

History
102 lines (51 loc) · 6.14 KB

基本知识.md

File metadata and controls

102 lines (51 loc) · 6.14 KB

TCP的状态机

互联网地址(ip地址)

网络上每一个节点都必须有一个独立的Internet地址(也叫做IP地址)。现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4标准,这32bit的数字分为4组,也就是常见的255.255.255.255的样式。IPv4标准上,地址被分为5类,我们常用的是B类地址。IP地址是网络号+主机号的组合。

域名系统:

域名系统是一个分布的数据库,它提供将主机名(网址)转换成IP地址的服务。

RFC

RFC就是TCP/IP协议的标准文档。

端口号(port)

这个号码是在TCP、UDP上的一个逻辑号码,并不是一个硬件接口,我们平时说把某某端口封掉了,也只是在IP层次把带有这个号码的IP包给过滤掉了。

应用编程接口

现在常用的编程接口有socket和TLI。

forward和redirect的区别

forward是服务器请求资源,服务器直接访问目标地址的URL,把相应内容读取过来,然后在讲这些内容发送给浏览器,浏览器根本不知道服务器发送的内容是从哪来的,所以它的地址栏中还是原来的地址。

redirect就是服务端根据逻辑,发送一个状态码,高速浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。

Android网络编程

  1. TCP连接

    • 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。建立起一个TCP连接需要经过“三次握手” :

      1. 第一次握手: 客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

      2. 第二次握手: 服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

      3. 第三次握手: 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

    • 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连 接之前,TCP 连接都将被一直保持下去。断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”(过程就不细写 了,就是服务器和客户端交互,最终确定断开)

  2. HTTP连接

    • HTTP协议即超文本传送协议(Hypertext Transfer Protocol),是Web联网的基础,也是手机联网常用的协议之一,HTTP协议是建立在TCP协议之上的一种应用。

    • HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

      1. 在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。

      2. 在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。

    • 由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。通常的 做法是即时不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客 户端“在线”。若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。

  3. SOCKET原理

    • 套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息 : 连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。

    • 应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协 议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以 和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。

  4. 从输入网址到渲染网页的全过程

    1. 在浏览器中输入要网址,浏览器查找域名的IP地址(DNS查找):

      1. 浏览器缓存

      2. 系统缓存

      3. 路由器缓存

      4. ISP DNS 缓存

    2. 浏览器给服务器发送一个HTTP请求

    3. 服务器给浏览器响应一个301永久重定向响应

    4. 浏览器跟踪重定向地址

    5. 服务器接收到获取请求,然后处理并返回一个响应

    6. 服务器发回一个HTML响应

    7. 浏览器开始显示HTML

    8. 浏览器发送获取嵌入在HTML中的对象