关于HTTP协议及SOCKET通信

一.HTTP

  1.报文结构

  HTTP:超文本传输协议,报文分为请求报文和响应报文。

  2.端口(tomcat端口)

  http在熟知的80端口使用TCP的服务;tomcat的默认端口是8080

  3.状态码含义

  

  5.get和post方法

  get是最简单的一种请求,其主要功能是从服务器端获取用户所需资源,并将其作为响应返回给客户端,这些资源可以是html页面,图片,文档等内容中的任何一种,但需要注意的是,get方法主要用来获取服务器端资源信息,就如同数据库中查询操作一样,不会影响到自身的状态,删除,修改,新增资源都是不允许的。但post不仅能够从服务器端获取资源,还可以想服务器端上传资源。采用get方法上传文件,数据量非常小,而且URL跟数据之间是采用“?”连接的,不安全。POST方法向服务器提交的内容在URL中并没有明文显示,对用户是不可见的。所以安全性高。

  6.http head的各个特点和区别

  7.http request的几种类型

  8.http1.1和http1.0的区别

  HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。HTTP 1.0不支持Host请求头字段,HTTP 1.1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这才实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。

  9. 页面请求的工作流程

  *1用户通过浏览器输入链接的地址来请求所需的资源,浏览器接受用户的请求,并把该请求组装成指定的格式发送给服务器端,客户端与服务器端之间通过HTTP来完成具体的交互。其中请求的数据流中主要包含HTTP请求方法(get和post),请求的网址(URL,统一资源定位符)以及请求的一些参数。

  *2服务器收到客户端发来的请求,并查找用户所需要的资源。

  *3服务器查找到用户请求的资源后,把该资源返回给客户端

  *4服务器通过把响应消息组装成特定的消息格式后返回给客户端,这个过程通过HTTP来完成。响应的数据流主要包含状态编码(代表请求成功或者失败),content-type(text,picture、html),响应消息的内容(图片或者html格式的内容)

  *5浏览器对html进行解析,并把响应结果展现给客户

  10.http怎么处理长连接(轮询)

http 长轮询:

  http 长轮询是服务器收到请求后如果有数据, 立刻响应请求; 如果没有数据就会 hold 一段时间, 这段时间内如果有数据立刻响应请求; 如果时间到了还没有数据, 则响应 http 请求;浏览器受到 http 响应后立在发送一个同样 http 请求查询是否有数据;

  http 长轮询的局限:

  1. 浏览器端对统一服务器同时 http 连接有最大限制, 最好同一用户只存在一个长轮询;
  2. 服务器端没有数据 hold 住连接时会造成浪费, 容易产生服务器瓶颈;

  http 短轮询:

  http端轮询是服务器收到请求不管是否有数据都直接响应 http 请求; 浏览器受到 http 响应隔一段时间在发送同样的 http 请求查询是否有数据;

  http 短轮询的局限是实时性低;

  两者相同点:
  可以看出 http 长轮询和 http 短轮询的都会 hold 一段时间;

  两者不同点
  间隔发生在服务端还是浏览器端: http 长轮询在服务端会 hold 一段时间, http 短轮询在浏览器端 “hold” 一段时间;

  11.主流的web服务器有哪些

  apache,IBM websephertomcat,tomcat,微软的IIS

二.HTTPS(443端口)

  http+ssl(secure socket layout)

  更多https的加密解密:http://www.cnblogs.com/chyingp/p/https-introduction.html

  不能单独用公私钥加密,还得用CA签名

三.cookie和session

  cookie是客户端保持状态的一种方案,而session机制采用的是服务器端保持状态的方案。cookie分发是通过扩展http协议来实现的,服务器通过在http的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。 session机制的话,服务器使用一种类似于散列表的结构(可能就是散列表)来保存信息。当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否已经包含了session的标识(session ID),如果已包含则说明以前已经为此客户端创建过session,服务器就按照这个session ID检索这个session,检索不到,就会创建一个。

  总结:1.cookie数据存在在客户的浏览器上,session的数据放在服务器上。2.cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,考虑到安全应当使用session。3.session会在一定时间内保存在服务器上。当访问增多时,会比较占用你的服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。4.单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存200个cookie。5.综上,登录信息保存在session,其他的如需保留,放cookie里。

四.socket通信

  1.socket通信的几个关键函数

  socket(创建一个用于通信的套接字)

  closesocket(关闭套接字,套接字描述符是参数)

  bind(当创建一个SOCKET以后,套接字数据数据中有一个默认的IP地址和默认的端口)。一个服务程序必须调用bind函数来给其绑定一个IP地址和一个特定的端口号。

  listen(服务程序可以调用Listen函数使其套接字处于监听状态)

  accept(调用accept函数从处于监听状态的流套接字的客户连接请求队列中取出排在最前的一个客户请求,并且创建一个新的套接字创建连接通道)

  connect(客户程序调用connect函数来使客户套接字描述符与name所指定的计算机的特定端口上的服务socket进行连接)

  send(客户端用来发送请求, 服务器端用来发送应答)

  recv(客户端服务器用来接收数据)

  2.http与socket的区别

  http:简单对象访问,对用于应用层,http协议是基于TCP连接的,http连接是短连接

  socket是对TCP/IP协议的封装,本身并不是一个协议,而是一个调用接口,通过socket,才能使用TCP/IP协议;socket是长连接,理论上一旦连接建立起连接就不主动断掉。

五.DNS

  1.DNS劫持,怎么预防?

  DNS劫持又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能反应或访问的是假网址。

  对付DNS劫持,只需要把系统的DNS设置手动切换为国外的DNS服务器的IP地址即可解决。

  2.DNS污染,怎么预防?

  DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址

  对于DNS污染,一般除了使用代理服务器VPN之类的软件之外,并没有什么其它办法。但是利用我们对DNS污染的了解,还是可以做到不用代理服务器和VPN之类的软件就能解决DNS污染的问题,从而在不使用代理服务器或VPN的情况下访问原本访问不了的一些网站。当然这无法解决所有问题,当一些无法访问的网站本身并不是由DNS污染问题导致的时候,还是需要使用代理服务器或VPN才能访问的。

时间: 2024-10-09 23:34:17

关于HTTP协议及SOCKET通信的相关文章

Android基础入门教程——7.6.4 基于UDP协议的Socket通信

Android基础入门教程--7.6.4 基于UDP协议的Socket通信 标签(空格分隔): Android基础入门教程 本节引言: 本节给大家带来Socket的最后一节:基于UDP协议的Socket通信,在第一节中我们已经详细地 比较了两者的区别,TCP和UDP最大的区别在于是否需要客户端与服务端建立连接后才能进行 数据传输,如果你学了前两节TCP的,传输前先开服务端,accept,等客户端接入,然后获得 客户端socket然后进行IO操作,而UDP则不用,UDP以数据报作为数据的传输载体,

于TCP协议的socket通信

基于TCP协议Socket服务端和客户端的通信模型: Socket通信步骤: 1.建立服务端ServerSocket和客户端Socket 2.打开连接到Socket的输出输入流 3.按照协议进行读写操作 4.关闭相对应的资源 多线程服务器 多线程用来实现 服务器与多客户端之间的通信 基本步骤 1 服务器创建serverSocket,循环调用accept()等待客户端连接 2 客户端创建一个scoket并请求和服务器端连接 3 服务器端接收客户端请求,创建socket与该客户建立专线连接 4 建立

Android基础入门教程——7.6.3 基于TCP协议的Socket通信(2)

Android基础入门教程--7.6.3 基于TCP协议的Socket通信(2) 标签(空格分隔): Android基础入门教程 本节引言: 上节中我们给大家接触了Socket的一些基本概念以及使用方法,然后写了一个小猪简易聊天室的 Demo,相信大家对Socket有了初步的掌握,本节我们来学习下使用Socket来实现大文件的断点续传! 这里讲解的是别人写好的一个Socket上传大文件的例子,不要求我们自己可以写出来,需要的时候会用 就好! 1.运行效果图: 1.先把我们编写好的Socket服务

Android基础入门教程——7.6.2 基于TCP协议的Socket通信(1)

Android基础入门教程--7.6.2 基于TCP协议的Socket通信(1) 标签(空格分隔): Android基础入门教程 本节引言: 上一节的概念课枯燥无味是吧,不过总有点收获是吧,本节开始我们来研究基于TCP协议的Socket 通信,先来了解下Socket的概念,以及Socket通信的模型,实现Socket的步骤,以及作为Socket服务 端与客户端的两位各做要做什么事情!好的,我们由浅入深来扣这个Socket吧! 1.什么是Socket? 2.Socket通信模型: Socket通信

JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层 TCP/IP协议 TCP/IP是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP.TCP称为传输控制协议,IP称为互联网络协议. 网络分层除了OSI模型分层,还有TCP/IP模型分层,将网络划分为四层,应用层.传输层.网际层

基于UDP协议的socket通信

UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据. 具体实现: udp_server.c   1 #include<stdio.h>   2 #include<stdlib.h>   3 #include<errno.h>   4 #include<sys/types.h>   5 #include<sys/socket.h>   6 #include<unistd.h>   7 #include<

基于TCP协议的socket通信

一.服务器端 1.创建serverSocket,即服务器端的socket,绑定指定的端口,并侦听此端口 ServerSocket server = new ServerSocket(8888); 2.调用accept()方法,开始侦听,等待客户端的连接,在未连接成功之前,处于阻塞状态,返回的socket,用于与客户端连接 Socket socket = server.accept(); 3.获取输入流,用来读取客户端发来的信息 InputStream is = socket.getInputSt

Socket通信类

package com.imooc; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostEx

Java中Socket通信的知识回顾---学习笔记

两台计算机进行通信的基本前提: (1)IP地址: 每台计算机都有自己独一无二的IP地址,根据IP地址判断与哪台计算机进行通信. (2)端口号: 每个应用程序都有自己专属的端口,根据端口号判断与计算机中的哪个应用程序进行通信. 说明: <1>用于区分不同应用程序 <2>端口号的范围:0-65535,其中0-1023是为系统保留的端口号 <3>常用的协议的端口号: http:80 ftp:21 telnet:23 <4>IP地址+端口号=Socket,Socke