TCP(传输层协议)
(1) 面向连接 
(2) 可靠的 
(3) 基于字节流的
 
连接建立阶段:
客户端  ------->SYN                 服务端(服务器被动打开)
客户端  <-------SYN-ACK        服务端
客户端  ------->ACK                 服务端(连接建立)
 
DDoS 攻击原理
 
SYN/ACK
 
丢包,超时
 
连接终止阶段:
客户端  ------->FIN                 服务端
客户端  <-------ACK FIN        服务端
客户端(等待连接终止)  ------->ACK                 服务端(连接终止)
 
Ip层不可靠,寻路问题(分发)
 
 
 
了解tcp协议能干什么
仅仅利用
电子邮件
聊天工具
网络游戏
文件传输
远程登录
 
 
Socket  ServerSocket
 
netstat -ntpl
 
 
 
HTTP
请求与响应模式
无状态
应用层协议
 
telnet www.example.com 80
GET /index.html HTTP/1.1
Host:www.example.com
 
请求信息:
请求行
请求头
空行
其他消息体
 
POST
POST /submit.html HTTP/1.1
Host:www.example.com
 
name = alice
 
 
 
Head(缓存) Options(跨域) Put Delete  Connect Trace
 
 
请求头:
Host           指定被请求资源的Internet主机和端口号
User-Agent        客户端将它的操作系统、浏览器和其它属性告诉服务器
Accept          客户端接受哪些类型的信息。如: text/html 表明希望接受html文本
Content-Type       客户端发送数据类型,如POST时
Referer          从哪个页面过来, 安全控制
 
 
例 User-Agent
telnet ip.cn 80
GET / HTTP/1.1
Host: ip.cn
User-Agent: curl
GET / HTTP/1.1
Host: ip.cn
User-Agent: mozilla
 
 
应答信息:
应答状态
应答头
CRLF
数据
 
 
例子:
HTTP/1.1 200 OK
Content-Length: 3059
Server: GWS/2.0
Date: Sat, 11 Jan 2003 02:44:04 GMT
Content-Type: text/html
Cache-control: private
Set-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqy
X9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.com
Connection: keep-alive
 
 
一级应答控制 状态码
200 OK                                 请求成功
302 Found                             跳转请求
304 Not Modified       无数据体,取缓存
400 Bad Request       请求格式错误,参数缺失等
403 Forbidden         拒绝执行
404 Not Found        资源未找到
405 Method Not Allowed    请求方法不支持
500 Server Error                          服务器错误
502 Bad Gateway                             网关错误
503 Server Unavailable                     服务器忙
 
 
 
 
二级应答控制 Header
 
Cookie
(1)存在浏览器端(通常需要加密)
(2)请求附加数据,标识用户
(3)持久或非持久
(4)在无状态的HTTP上维持状态
(5)有了状态,才有"交互性"可言

Session
(1)客户端访问
(2)服务器生成一个非持久Cookie
(3)后续请求将该Cookie作为Session Id

 
兵器库
curl ip.cn
Dev HTTP Client (Chrome)
HTTP Watch (IE)
 
 
Java编程
HttpComponents http://hc.apache.org/
okhttp http://square.github.io/okhttp/
JSON
http://json.org/
 
对眼睛好一点
http://jsoneditoronline.org/
 
数据结构
数字
字符
布尔
None
结构体
列表
 
 
简单值类型
127, -1.4e+3
"hello world"
true / false
null
Object
{
"name": value,
...
}
 
Array   [127, "hello", {}, true, null]
 
 
Map的子类,序列化忽略自定义属性
class Result extends java.util.HashMap {
public final int version;
public Result(int version) {
this.version = version;
}
public Result build() {
if (version == 1) {
put("ret", true);
} else {
put("status", 0);
}
return this;
}
}
new Result(request.getParameter("version")).build();
 
 
 
 
API Design
功能第一
考虑错误处理
效率问题
URL的意图表现力
GET /api/v1/user/id/1
GET /api/v1/user/role/manager?age_gt=25&age_lt=30
 
 
GET|POST [/api/version]/model/property/value?filter=value
{
"status": 0,
"message": null,
"data":{
 

http & json的更多相关文章

  1. 使用TSQL查询和更新 JSON 数据

    JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...

  2. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  3. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  4. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

  5. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...

  6. 一个粗心的Bug,JSON格式不规范导致AJAX错误

    一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...

  7. JSON.parse()和JSON.stringify()

    1.parse 用于从一个字符串中解析出json 对象.例如 var str='{"name":"cpf","age":"23&q ...

  8. json与JavaScript对象互换

    1,json字符串转化为JavaScript对象: 方法:JSON.parse(string) eg:var account = '{"name":"jaytan&quo ...

  9. .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator

    去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务 ...

  10. WebApi接口 - 响应输出xml和json

    格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...

随机推荐

  1. iOS开发app上架流程之证书的制作

    1.证书的制作:登陆 https: 1.1appid的注册 选择Identifiers 下的App IDs然后如图所示 点击加号,进入 App ID Description下的Name:这个是appI ...

  2. 2016 SyScan360 国际前瞻信息安全会议 多角度探讨信息安全

    SyScan360国际前瞻信息安全会议由与中国第一大互联网安全公司-360公司与SyScan前瞻信息安全技术年会(TheSymposiumonSecurityforAsiaNetwork,以下简称Sy ...

  3. Access denied for user 'root'@'localhost' (using password:YES) 解决方案[转]

    关于昨天下午说的MySQL服务无法启动的问题,解决之后没有进入数据库,就直接关闭了电脑. 今早打开电脑,开始-运行 输入“mysql -uroot -pmyadmin”后出现以下错误: “Access ...

  4. scale相关设置—手动设置

    在ggplot2 中,可以进行手动设置的函数有: scale_colour_manual(..., values).scale_fill_manual(..., values). scale_size ...

  5. kettle连接Hbase中数据导入(8)

    http://wiki.pentaho.com/display/BAD/Loading+Data+into+HBase 1)下载样本文件 到官网去下载

  6. VC中获取窗口控件相对客户区的坐标

    1: RECT rect; 2: GetDlgItem(item_id).GetWindowRect(&rect); 3: ScreenToClient(&rect);

  7. java邮件发送(以163邮箱为例)

    1.首先应该开通163邮箱的smtp和pop3,得到授权码 2.其次建立一个web项目,否则需要倒jar包mail.jar 3.创建一个类 4.注意:邮件内容必须为正式话语,否则系统会认为是垃圾邮件而 ...

  8. Python 文本处理的应用

    最近根据公司运营部需求要对mongo数据库中的相关信息进行统计,本人一般喜欢将数据库服务器中相关的数据导出来(PS:其一由于Mongo为Nosql,在涉及关联表时不好处理,其二是因为虽然为测试环境,但 ...

  9. ural 1119. Metro(动态规划)

    1119. Metro Time limit: 0.5 second Memory limit: 64 MB Many of SKB Kontur programmers like to get to ...

  10. drupal7 上传文件中文乱码

    drupal7自带有file模块,可以上传文件. 但是存在问题:如果上传的文件名称是中文,存储在文件下面的文件名称是乱码的,解决办法如下:参考出处 includes/file.inc中,修改两处代码, ...