网络|TCP/IP、HTTP、Cookie/Session

基础知识

TCP/IP五层模型
作用物理设备协议
应用层负责应用程序沟通DNS、DHCP、URL、HTML、HTTP、SSH、TELNET、FTP、SMTP
传输层负责两台主机数据传输TCP、UDP
网络层负责地址管理和路由选择路由器IP、ARP
数据链路层负责设备之间的数据帧的传送和识别交换机
物理层负责光电信号的传递方式集线器
网络传输基本流程

1.在局域网中链路层如何通信

一个节点发送数据(带有mac地址),所有节点都能收到,mac地址相同的节点才能接受数据,其余的节点将数据抛弃

2.在局域网中数据如何从A地应用层到达B地应用层

封装、解包分用

3.在广域网中数据如何传输

不断地封装+解包,每经过一个局域网(路由器),IP指导着mac地址变化

相关概念

IP地址:标识网络中不同主机的地址

MAC地址:识别数据链路层中相连的节点

端口号:标识一个进程。一个端口只能属于一个进程,一个进程能有多个端口

IP+port:标识网络上的某一台主机的某一个进程

五元组:源IP+源端口号+目的IP+目的端口号+协议号标识网络上唯一一个端对端的通信通道

端口号范围:1-1023:知名端口号(ssh:22,http:80,https:443,mysql:3306,dns:53);1024-65535:操作系统动态分配的端口号7

物理层

数据链路层

以太网

概念

帧格式

MTU

以太网的最大传输单元(MTU)一般为1500字节

MTU对IP协议的影响

IP分片

MYU对UDP协议的影响

若UDP携带的数据报超过1472,就会在网络层被分为多个IP数据报,若其中一个丢失,会引起接收端重组失败

MTU对TCP协议的影响

TCP建立连接时,通信双方会进行MSS协商。协商过程:双方在发送SYN时在头部写入MSS值,双方选择较小值最为最终MSS

网络层

IP协议

协议头格式

在这里插入图片描述

IP地址的基础知识
编址方法
五类地址划分

img

子网划分

从主机号借用若干位作为子网号,变成三级的IP地址

从一个IP数据报的首部无法判断主机所在的网络是否进行了子网划分,所以需要子网掩码,来找出IP地址中的子网部分

CIDR 无分类域间路由选择

提高了利用率,但IP地址的绝对上限没有增加

网络号 = ip & 子网掩码

主机号 = ip & (~子网掩码)

特殊地址

IP地址的主机地址全为0,就是网络号,代表局域网

IP地址的主机地址全为1,就是广播地址

IP地址的数量限制

IP地址仍然不够用解决方法:

1.动态分配IP地址:只给接入网络的设备分配IP地址

2.NAT

3.IP v6

私有IP地址和公有IP地址
路由

IP的目标就是路由寻路:根据目标IP,找到下一跳的IP

目标的实现靠网络上的每一个节点,每个节点上都有一个路由表

路由表查询:1.目标IP&子网掩码

​ 2.若结果等于目标网络就走这条路,否则发到默认路由

IP协议相关技术

NAT

子网内的主机需要和外网通信,路由器将IP地址逐级替换为公网IP

NAPT

在局域网内,很多主机访问同一个外网服务器,对于服务器返回的数据,NAPT决定返回给哪个主机

ARP(数据链路层/网络层)

每个节点有一个ARP表,根据IP换mac地址

ARP表的来源:在局域网内广播,收到回复后记录到表中,询问时机:发送数据以及定时询问

传输层

socket编程

UDP

UDP服务器

UDP客户端

TCP

TCP服务器

TCP客户端

多线程TCP服务器

​ TCP客户端

线程池TCP服务器

​ TCP客户端

TCP vs UDP
TCPUDP
可靠传输不可靠传输
有连接无连接
字节流字符流

协议介绍

UDP协议
格式

在这里插入图片描述

面向数据报

应用层交给UDP多长的报文,就原样发送,不会拆分或合并

缓冲区

UDP没有发送缓冲区,发送成功索命数据到达网络,不代表对方接收到数据

UDP具有接受缓冲区,但不能保证接收顺序与发送顺序一致,同时,若接收区满了,再到达的数据会被丢弃

TCP协议
格式

在这里插入图片描述

缓冲区

TCP具有发送缓冲区,因为数据可能需要重传

TCP具有接收缓冲区,因为数据不是马上被应用层取走的,以及收到的数据可能是乱序的

TCP协议栈中,发送成功说明数据被写入TCP协议栈中的发送缓冲区,不代表数据发送到网络上,也不代表对方已收到;对于接收方,若接收缓冲区有数据则直接返回,否则一直阻塞。

TCP实现可靠性的机制
确认应答

在这里插入图片描述

SN的作用:1.标号

2.接收方可根据此做排序,保证数据是有序收到的

3.去重

ASN的作用:通知发送方已收到数据,下一个数据从哪发

超时重传

主机A向主机B发送数据,若主机A没有在一个特定的时间间隔内收到主机B的确认应答,就会重发

没有收到B的确认应答可能原因有二:1.因为网络等原因,数据未到达B;2.B发送的确认应答丢失(B会收到重复数据,利用SN去重)

连接管理

三次握手

1.过程描述:标志位+序列号+状态描述+应用层代码

在这里插入图片描述

2.为什么是三次

​ a.为什么不能是两次:若缺少一步就不满足确认应答

​ b.为什么不能是四次:server回复ACK与SYN可合并

3.建立连接的目的

​ a.什么是连接

​ 抽象层面:五元组唯一标识的一条通信通道

​ OS层面:一个Connection对象,描述五元组信息和各种管理信息,OS通过List/Map将对象组织起来

​ b.为什么要有TCP连接

​ 这套机制是以不同五元组描述的通道管理

​ c.建立连接的目的

​ 同步ISN(初始序列号)

​ d.为什么ISN必须是随机的

​ ISN如果是确定的,可能会被伪造Segment攻击

四次挥手

1.过程描述:标志位+状态描述

在这里插入图片描述

2.TIME_WAIT=2MSL

​ MSL是TCP报文的最大生存时间,在理论上保证最后一个报文可靠到达

3.CLOSE_WAIT

​ 服务器上出现大量的CLOSE_WAIT,原因是服务器没有正确的关闭socket

流量控制

接收主机向发送端主机通知自己可接收数据的大小,发送端发送不超过这个限度的数据,这个大小限度就是窗口大小。(根据对方的接收能力,控制自己的发送量)

当接收端的接收缓冲区面临数据溢出时,就会设置一个更小的窗口大小并通知给发送端,从而控制发送量。

当接收端缓冲区即满,暂停接收数据,若发送端过了超时重传的时间,没有收到接收端窗口更新的通知,就会发送一个窗口探测的数据段,此数据段仅含一个字节以获取接收端最新的窗口大小信息。

拥塞控制

发送方的发送能力 = min(接收方能力,路上的承载能力)

路上的承载能力获取方法:

①连接启动后,确认应答机制 -> 超时重传 -> 评估重传的频率 -> 网络丢包的情况

②连接一启动

在这里插入图片描述

TCP提高性能的机制
滑动窗口

在这里插入图片描述

快速重传

在窗口比较大,又出现报文丢失的情况下,同一个序列号的确认应答会重复不断地返回,如果发送端连续3次收到同一个确认应答,就会将对应的数据重发

延迟应答

TCP不会一收到数据就马上ACK,等两种情况

①后续可能马上还有数据(两个ACK合并节省网络带宽)

②和捎带应答有关

捎带应答

减少发送的Segment,尽量合并有效数据和ACK应答

粘包问题

站在传输层上,TCP是一个一个报文发过来的,按照SN放在缓冲区中,站在应用层的角度,是一串连续的字节数据

所以需要明确两个包的边界

定长的包,每次按照固定大小读取;

变长的包,可在包头约定一个包总长度的字段,或者在包与包之间使用明确的分隔符

异常情况

进程终止

机器重启

机器掉电/网线断开

应用层

HTTP
协议格式

在这里插入图片描述

方法
方法说明
GET(查询)获取资源
POST(插入)传输实体
PUT(修改)传输文件
DELETE(删除)删除文件

get vs post

get不带有请求正文,post带有请求正文

URL

<协议名称>://<主机名>/<资源路径>?<查询字符串>#<片段标识符>

http vs https

http:不安全的,是明文传输、标准端口是80

https:安全的,是具有安全性的ssi加密传输、标准端口是443

状态码
类别原因短语
1XX信息性状态码接受的请求正在处理
2XX成功状态码请求正常处理完毕
3XX重定向状态码需要附加操作完成请求
4XX客户端错误状态码服务器无法处理请求
5XX服务器错误状态码服务器处理请求出错

200:OK

301:资源移至新位置(永久搬家)

302:重定向

304:Not Modified,若请求的资源未改变,浏览器不返回任何资源。客户端会缓存访问过的资源

307:临时重定向

400:Bed Request,请求语法错误

401:Unauthorized,用户需验证

403:Forbidden,无权限

404:Not Found,资源不存在

500:服务器内部错误

502:Bad Gateway,作为网关或代理的服务器尝试请求时,从远程服务器收到一个无效响应

504:Gateway Time-out,作为网关或代理的服务器,未及时从远端服务器获取请求

常见报头
报头说明RequestResponse
Content-Type正文数据类型
Content-Length正文长度
Host客户端告知服务器,所需资源在哪个主机上的哪个端口
User-Agent声明用户的操作系统和浏览器版本信息
referer当前页面从哪个页面跳转过来
location搭配3XX,告诉客户端要去哪里访问
Cookie
Set-Cookie

自定义头:X

HTTP服务器
Session&Cookie
会话跟踪的原因

HTTP协议是无状态的协议,一旦数据交换完毕,客户端与服务器就会断开连接,即上次请求与这次请求没有关系,意味着服务器无法跟踪上会话,无法实现用户状态需要保持的场景。

Cookie可以通过客户端记录确定用户身份,Session通过在服务端确定用户身份。

Cookie

在这里插入图片描述
Cookie存在有效期,比如会话级别就是关闭浏览器就过期了

Cookie保存在本地是不安全的

Session

在这里插入图片描述

Session vs Cookie

Cookie以文本文件形式存储在客户端本地磁盘中,Session存储在服务器

Cookie可以被访问不安全,但Session值无法被访问更安全

Session会在一定时间内保存在服务器上,当访问增多,会占用服务器的性能

Cookie有大小限制

HTTP服务器+Session&Cookie
HTTP服务器+Session&Cookie+HTML
DNS

域名 -> IP地址

DHCP

自动给子网内新增主机结点分配IP地址

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值