网络编程

一、TCP/IP

TCP/IP是互联网相关的各类协议族的总称。

1.TCP/IP的分层管理

TCP/IP协议族层次分别分为4层:应用层、传输层、网络层和数据链路层。

应用层:
决定了向用户提供应用服务时通信的活动。http协议也处于该层。
传输层:传输层对上层应用层,提供处于网络连接中的两太计算机之间的的数据传输。在传输层有两个性质不同的协议:TCP/UDP。
网络层:网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(传输路线)到达对方计算机,并把数据包传送给对方。
链路层:
用于处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、网卡及光纤等物理可见部分。

二、可靠的TCP协议

TCP位于传输层,提供可靠的字节服务。为了准确无误地将数据送达目标处,TCP协议采用了三次握手策略。而四次挥手,用来保障通讯双方可以安全的回收TCP通信的系统资源

1.三次握手

第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

2.四次挥手

第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。

三、http1.x协议
1.请求报文组成

请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。
请求报文
2.响应报文组成
响应报文
3.报文首部字段

通用首部字段

通用首部字段

请求首部字段

请求首部字段

响应首部字段
响应首部字段

实体首部字段:针对请求报文和相应报文的实体部分使用的首部

实体首部字段

四、cookie、session和token

cookie和session的不同之处主要就是:cookie将数据保存在本地;session将数据保存在服务器上。
token主要用于获取用户信息。

五、https协议

http+传输内容加密+证书认证+完成性的保护 = https
https是在http通信接口部分使用了SSL和TLS协议来代替。通常,http直接和tcp通信,当使用了SSL时,则演变成先和SSL通信,再由SSL和TCP进行通信。简而言之https就是身披SSL协议这层外壳的HTTP。在采用SSL后,http就拥有了Https的加密、证书和完整性保护这些功能。

六、SPDY和http2协议
1.目前http1.x的问题

连接不可复用,每次连接需要3次握手;
线头阻塞问题,多个请求同时发起时后续请求需要等待前面的请求处理完成;
不能主动的push消息。

2.SPDY和http2

SPDY是Google牵头开源的一种协议,为的就是解决http1.x的问题。http2是在SPDY的基础上进行修改和改进。

http2是一种二进制协议。
多路复用:采用了多路复用的机制来解决http1.x的连接不可复用问题。多路复用允许同时通过单一的 HTTP/2 连接发起多重的请求-响应消息。

在http2中,服务器可以对客户端的一个请求发送多个响应。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • 6.1 公钥密钥加密原理 6.1.1 基础知识 密钥:一般就是一个字符串或数字,在加密或者解密时传递给加密/解密算...
    AndroidMaster阅读 4,002评论 1 8
  • 引言 网络学习的核心内容就是网络协议的学习 网络协议:网络中进行数据交换而建立的规则、标准或者说是约定的集合因为不...
    _凉风_阅读 1,972评论 8 22
  • 网络模型 OSI分层模型 OSI 模型(Open System Interconnection model)是一个...
    wustor阅读 498评论 0 2
  • 主目录见:Android高级进阶知识(这是总目录索引)[written by 无心追求] TCP问题分析 网络的五...
    ZJ_Rocky阅读 1,568评论 0 5
  • 1.tcp的相关介绍 udp通信模型: udp通信模型中,在通信开始之前,不需要建立相关的链接,只需要发送数据即可...
    冬gua阅读 191评论 0 0