TCP协议和HTTP协议

TCP/IP四层协议

imooc

TCP(Transmission Control Protocol 传输控制协议)

TCP协议是计算机网络中非常复杂的一个协议。

1. 它解决了以下问题:

(1). TCP协议可靠传输

网络环境复杂,保证数据准确无误到达

(2). TCP协议流量控制

感知对方压力并控制流量(比如网卡性能差异,造成接收压力,TCP可以减缓传输,控制流量。感受接收方的压力)

(3). TCP协议拥塞控制

感知网络压力并控制发送速度(如果网络出现拥塞,TCP可以控制发送速度感受网络的压力)

2. TCP报文

imooc

TCP协议是面向字节流的协议,不管传输什么数据,都需要转成字节,再传输

3. 应用场景

(1). 微信、QQ等APP消息发送接收

(2). 浏览器-服务器通信

(3). 其他可靠通信的场景

TCP的三次握手与四次挥手

(1). 三次握手

三次握手是建立连接的过程,当客户端向服务端发起连接时,会发一包连接请求数据,过去询问一下,能否与你建立连接,这包数据称为SYN包,如果对端同意连接,则回复一包SYN+ACK包,客户端收到后回复一包ACK包,连接建立,因为这个过程中互相发送了三包数据,所以称之为“三次握手”

哔哩哔哩UP掌芝士

为什么不是三次握手而不是两次握手?

这是为了防止因为已失效的请求报文,突然又传到服务器引起错误。三次握手本质上是为了解决网络信道不可靠的问题,为了在不可靠的信道上建立可靠的连接。

三次握手之后,客户端和服务器端都进入到了传递数据的状态。

(2). 传输确认

一包数据有可能会被拆成多包发送,如何处理丢包问题?

这些数据包到达的先后顺序不同,如何处理乱序问题?

针对这些问题,TCP协议为每一个连接,建立了一个发送缓冲区,从建立链接后的第一个字节的序列号为0,后面每个字节的序列号就会增加1。发送数据时,从发送缓冲区取一部分数据组成发送报文,在其TCP协议中会附带序列号和长度。接收端在收到数据后,需要回复确认报文,确认报文中的ACK等于接受序列号加长度,也就是下一包数据需要发送的起始序列号。这样一问一答的发送方式,能够使发送端确认发送的数据,已经被对方收到,发送端也可以发送一次连续多包数据,接收端只需要回复一次ACK就可以了。这样发送端可以把待发送的数据分割成一系列的碎片,发送到对端,对端根据序列号和长度,在接收后重构出来完整的数据,假设其中丢失了某些数据包,在接收端可以要求发送端重传。

TCP连接是全双工的,对于两端来说均采用上述机制。

哔哩哔哩UP掌芝士

(3). 四次挥手

假设客户端主动发起连接关闭请求,它需要将服务端发起一包FIN包,表示要关闭连接,自己进入中止等待1状态,这是第一次挥手。

服务端收到FIN包,发送一包ACK包,表示自己进入了关闭等待状态,客户端进入中止等待2状态,这是第二次挥手。

服务端此时还可以发送未发送的数据,而客户端还可以接收数据,待服务端发送完数据之后,发送一包FIN包,进入最后确认状态,这是第三次挥手。

客户端收到之后回复ACK包,进入超时等待状态,经过超时时间后关闭连接,而服务端收到ACK包后,立即关闭连接,这是第四次挥手。

为什么客户端需要等待超时时间?

这是为了保证对方已收到ACK包,因为假设客户端发送完最后一包ACK后就释放了连接,一旦ACK包在网络中丢失,服务端将一直停留在最后确认状态。客户端在发送完最后一包ACK包后等待一段时间,这时服务端因为没有收到ACK包,会重发FIN包,客户端会响应FIN包,重发ACK包,并刷新超时时间,这个机制跟三次握手一样,也是为了保证在不可靠的网络链路中,进行可靠的连接断开。

哔哩哔哩UP掌芝士

UDP协议是非连接的,发送数据就是把数据封装一下,然后从网卡发送出去就可以了,数据包之间并没有状态上的联系,正因为UDP这种简单的处理方式,导致它的性能损耗非常少,对于CPU内存资源的占用也远小于TCP,但是对于网络传输过程中时产生的丢包,UDP协议并不能保证,所以UDP在传输稳定性上要弱于TCP

TCP vs UDP 

TCP传输数据稳定可靠,适用于对网络通讯质量要求较高的场景,需要准确无误的传输给对方,比如传输网络,发送邮件,浏览网页等。

UDP的优点是速度快,但是可能产生丢包,所以适用于对实时性要求较高,但是对少量丢包没有太大要求的场景,比如域名查询,语音通话,视频直播等。UDP还有一个非常重要的应用场景,就是隧道网络,比如VPN,以及在SDN中用到的VXLAN.

哔哩哔哩UP掌芝士

网络套接字与通信过程

进程之间的通信:HTTP协议

imooc

计算机可以同时运行多个不同的进程,比如打开浏览器的同时,可以播放视频,那么如何识别是哪一个进程进行通信呢?

(1). 使用端口(Port)来标记不同的网络进程

(2). 端口(Port)使用16比特位表示0~2^16(0~65535)

imooc


imooc

套接字(Socket)是抽象概念,表示TCP连接的一段。

通过套接字可以进行数据发送或接收。


imooc

HTTP(HyperText Transfer Protocol: 超文本传输协议)

通过HTTP协议来获取互联网资源。包含着超链接,图片,视频等多媒体的副本,这个副本可以通过HTTP协议进行传输

imooc

互联网资源那么多,怎么获取    --通过地址获取

imooc

HTTP请求方法:

imooc

比较常用的请求方法

(1). GET:   获取指定的服务器资源

(2). POST:  提交数据到服务端

(3). DELETE:  删除指定的服务器端资源

(4). UPDATE:  更新指定的服务端资源

Web服务器工作流程

(1). 接受客户端请求:服务端接受客户端连接

(2). 接收请求报文,通过报文,服务端可以知道浏览器想要干什么,想获取或操作什么资源

(3). 处理请求

(4). 访问Web资源:通过路径去判断需要访问哪些资源

(5). 构造应答:构成应答报文

(6). 发送应答:把应答报文发送给浏览器

imooc

HTTP协议的请求报文详解

请求报文的主要内容

imooc

1. 请求行:不管有多少内容,都只有一行

包含:请求方法(GET,POST等),请求地址(唯一对应Web服务器的资源),HTTP版本

2. 请求头:

通信的附加信息:比如说明当前手机还是计算机

格式:<key>:<value>

常用的请求头:

imooc

实例:

3. 请求内容

发送数据

数据格式是不固定的,只要客户端和服务端协商好就可以

注意:请求内容不是必须的

4. 实例

imooc

HTTP协议的应答报文详解

imooc

1. 状态行

状态码:三位数

imooc


imooc

304: 客户端缓存的数据并没有发生变化,不需要再次请求后台,可以直接使用本机缓存,即304为重定向到本机缓存

2. 应答头

和请求头类似

imooc

常用的应答头

imooc

3. 实例:

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

推荐阅读更多精彩内容