重拾计算机网络之TCP和HTTP学习记录


前言

最近项目不算太忙,自学之余突然发现自身在计算机网络模型这块知识点还是有些模糊,由此整理记录一下,巩固基础。


提示:以下是本篇文章正文内容,下面案例可供参考

一、计算机网络知识基础

1、OSI七层模型、TCP/IP四层模型

在这里插入图片描述
百度百科
在这里插入图片描述

2、IP协议

`作用: 把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址和MAC地址(Media Access Control Address)。`
由于IP地址是稀有资源,不可能每个人都拥有一个IP地址,所以我们通常的IP地址是路由器给我们生成的IP地址,
路由器里面会记录我们的MAC地址。而MAC地址是全球唯一的,除去人为因素外不可能重复。

3、TCP协议

TCP/IP协议栈是美国国防部高级研究计划局计算机网(Advanced Research Projects Agency Network,ARPANET)和其后继因特网使用的参考模型。ARPANET是由美国国防部(U.S.Department of Defense,DoD)赞助的研究网络。最初,它只连接了美国境内的四所大学。随后的几年中,它通过租用的电话线连接了数百所大学和政府部门。最终ARPANET发展成为全球规模最大的互连网络-因特网。最初的ARPANET于1990年永久性地关闭。

按层次分,TCP属于传输层,提供可靠的字节流服务。
'所谓的字节流,其实就类似于信息切割。比如你是一个卖自行车的,你要去送货。
安装好的自行车,太过庞大,又不稳定,容易损伤。不如直接把自行车拆开来,每个零件上都贴上收货人的姓名。
最后送到后按照把属于同一个人的自行车再组装起来,'
这个拆解、运输、拼装的过程其实就是TCP字节流的过程。

tcp 报文格式
在这里插入图片描述

上图中有几个字段需要重点介绍下:
(1)顺序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(2)确认号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
(A)URG:紧急指针(urgent pointer)有效。
(B)ACK:确认序号有效。
(C)PSH:接收方应该尽快将这个报文交给应用层。
(D)RST:重置连接。
(E)SYN:发起一个新连接。
(F)FIN:释放一个连接。

tcp三次握手
在这里插入图片描述
tcp四次挥手
在这里插入图片描述

4、HTTP(超文本传输协议)

HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议.,客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端.在请求结束后,会主动释放连接,http是基于tcp的

    HTTP协议是建立在请求/响应模型上的。
首先由客户建立一条与服务器的TCP链接,
并发送一个请求到服务器,
请求中包含请求方法、URL、协议版本以及
相关的MIME样式的消息。服务器响应一个状态行,
包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。
    HTTP/1.0为每一次HTTP的请求/响应建立一条新的TCP链接,
因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。
一次TCP链接的建立将需要3次握手。
    另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)。每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1(Connection:keep-alive)提出了可持续链接的实现方法。
HTTP/1.1将只建立一次TCP的链接而重复地使用它传输一系列的请求/响应消息。
因此减少了链接建立的次数和经常性的链接开销。
http的长短链接本质上是tcp的长短链接

5、UDP协议

用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。
UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,
但是并不能保证它们能到达目的地。
由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快

6、socket接口

socket不是协议,准确来说只是一个调用接口。
在这里插入图片描述
tcp和udp是传输层协议,可以通过socket来操作tcp和udp.

7、WebSocket协议

WebSocket也是一种协议,并且也是基于TCP协议的。是应用层协议
具体流程是WebSocket通过HTTP先发送一个标记了 Upgrade 的请求,
服务端解析后开始建立TCP连接,省去了HTTP长连接每次请求都要上传header的冗余.
WebSocket在进行第一次HTTP请求之后,其他全部采用TCP通道进行双向通讯

参考链接:
https://www.cnblogs.com/BlueTzar/articles/811160.html
https://blog.csdn.net/xuedan1992/article/details/80958522
https://www.cnblogs.com/biehongli/p/11964057.html
https://blog.csdn.net/ab31ab/article/details/93498443

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值