http协议
2015-10-20 14:09
459 查看
1. 举例
2. http_req解释
Server 响应头包含处理请求的原始服务器的软件信息
Connection:keep-alive TCP连接仍然保持打开状态
Pragma 页面缓存(1.0)
cache-control 页面缓存(1.1)
如果指定压缩,Accept-Encoding: gzip, deflate,主机头会返回压缩提示,Content-Encoding: gzip。相应的Content-Length也会减小
错误码:见百科
3. 在tcp/ip协议中的位置
http协议通常承载于tcp协议之上,有时也承载于TLS或SSL协议层之上,就成了我们常说的https。http端口是80,https端口是443
4. http消息格式
#include<netinet/in.h> #include <errno.h> #include <stdlib.h> #include <string.h> int main() { int sockfd; char buffer[1024]; struct sockaddr_in server_addr; int portnumber, nbytes; FILE *fp; char request[1024]; int i; char *host = "127.0.0.1"; char *http_req = "GET /%s HTTP/1.1\r\nAccept: */*\r\n\ Accept-Language: zh-cn\r\n\ Accept-Encoding: gzip, deflate\r\n\ Host: %s:%d\r\n\ Connection: Close\r\n\r\n"; /* 客户程序开始建立 sockfd描述符 */ if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) /*建立SOCKET连接*/ { fprintf(stderr, "Socket Error:%s\a\n", strerror(errno)); exit(1); } /* 客户程序填充服务端的资料 */ bzero(&server_addr, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(80); inet_pton(PF_INET, host, &server_addr.sin_addr); /*连接网站*/ if(connect(sockfd, (struct sockaddr *)(&server_addr), sizeof(struct sockaddr)) == -1) { fprintf(stderr, "Connect Error:%s\a\n", strerror(errno)); exit(1); } /*准备request,将要发送给主机*/ nbytes = sprintf(request, http_req, "maintlogin.jsp", host, 80); printf("%s", request); /*发送http请求request*/ if(write(sockfd, request, nbytes) < 0) { perror("write"); } fp = fopen("index.html", "a"); while((nbytes = read(sockfd, buffer, 1))) { if(i < 4) { if(buffer[0] == '\r' || buffer[0] == '\n') { i++; } else { i = 0; } printf("%c", buffer[0]);/*把http头信息打印在屏幕上*/ } else { fwrite(buffer, 1, 1, fp);/*将http主体信息写入文件*/ i++; if(i % 1024 == 0) { fflush(fp); /*每1K时存盘一次*/ } } } fclose(fp); close(sockfd); return 0; }
2. http_req解释
//http请求 GET /maintlogin.jsp HTTP/1.1 //文件要指定/ Accept: */* //开头不要有空格 Accept-Language: zh-cn Host: 127.0.0.1:80 Connection: Close //请求失败 HTTP/1.1 400 Bad Request Server: Apache-Coyote/1.1 Date: Tue, 20 Oct 2015 05:23:24 GMT Connection: close //请求成功 HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: text/html;charset=UTF-8 Content-Length: 1297 Date: Tue, 20 Oct 2015 05:22:36 GMT Connection: close
Server 响应头包含处理请求的原始服务器的软件信息
Connection:keep-alive TCP连接仍然保持打开状态
Pragma 页面缓存(1.0)
cache-control 页面缓存(1.1)
如果指定压缩,Accept-Encoding: gzip, deflate,主机头会返回压缩提示,Content-Encoding: gzip。相应的Content-Length也会减小
错误码:见百科
3. 在tcp/ip协议中的位置
http协议通常承载于tcp协议之上,有时也承载于TLS或SSL协议层之上,就成了我们常说的https。http端口是80,https端口是443
4. http消息格式
相关文章推荐
- http://www.javaapk.com
- 简单区分Vmware的三种网络连接模式(bridged、NAT、host-only)
- HTTP状态码
- iOS -- 网络请求到的数据,中文出现乱码!!!
- centos 入门1 安装和网络配置
- 【网络编程系列】二:socket通信原理及实践
- apache服务器配置https服务
- http://sofar.blog.51cto.com/353572/1540874
- Centos7+Apache2.4+Domino9实现HTTP协议邮件代理
- 【网络编程系列】一:字节顺序的大端与小端表示法
- 《自己动手写网络爬虫》读书笔记
- CCNA学习笔记1---OSI TCP/IP模型
- HttpClient使用总结
- 《TCP/IP详解 卷一》读书笔记-----DNS
- 达人眼中的WINCE网络驱动
- 达人眼中的WINCE网络驱动
- 收集整理来自网络上的一些常见的 前端、H5面试题 前端开发面试题
- Python实现TCP代理
- HTTP Header
- http://www.ruanyifeng.com/blog/2011/09/restful