计算机网络TCP/IP模型复习笔记(随时补充)

看到一篇大佬的博客,刚好前段时间也有简单了解了一点计算机网络的TCP/IP,就顺便总结一下。
大佬文章链接:

https://blog.csdn.net/ThinkWon/article/details/104903925

计算机网络的自己理解,尽量白话。理解不对,请指正

1. 简单讲述

计算机网络因为很抽象,所以不是很好理解,用生活中举例来说一个场景“你在家,用电脑、手机去请求一个网址或者发送一个微信消息”都会用到计算机网络
你请求百度的网址,百度给你返回一些信息,那么问题来了:
你请求中间发生了什么?返回怎么返回的?
这个时候就涉及到了计算机网络

2. 计算机分层结构

这个地方是有个图的,可是感觉每次看完图就过了,所以这次先写,再放图吧。
从上往下:
应用层
运输层
网络层
数据链路层

注意:部分会将数据链路层划分为数据层和物理层(可能也有不同的叫法),所以也就有了4层或者5层的说法,7层的是ISO模型,此处暂时不管

3. 每一层协议简述(请注意,是简述)

按照请求百度,百度返回值给主机这种行为来大概说一下每层的功能以及部分协议吧。

  • 应用层:

这个地方最常见的协议是HTTP和HTTPS了(还有什么email、FTP等等)。
延伸问题(职业测试,真的遇到过,顺便记录一下吧):

问题一:HTTP和HTTPS的端口号一般是多少?
答:http:80端口,https:443
这个地方涉及到抓包配置,Fiddler或者Charles等工具无法获取HTTPS的请求报文,此时就需要配置,并安装证书

问题二:HTTP和HTTPS请求的区别是什么?
安全性
HTTP请求是明文的,HTTPS进行了SSL加密
连接建立
HTTP直接进行TCP三次握手即可,HTTPS除了TCP三次握手外,还需要进行SSL握手
端口
HTTP端口默认80 ,HTTPS端口默认443
CA证书
HTTP不需要CA证书 , HTTPS需要CA证书确认身份

  • 传输层:

这个地方最常见的协议就是TCP和UDP了
延伸问题(下面这两个真的是老生常谈):

问题一:TCP和UDP的区别是什么?
TCP面向连接的字节流服务,UDP面向数据报的协议
TCP提供可靠的数据传输,UDP不保证可靠性
TCP点到点通信(类似电话),UDP一对一,一对多,多对一,多对多通信(类似对讲机)
TCP基于连接(所以有三次握手四次挥手),UDP不基于连接
TCP首部20字节,UDP首部8字节,包更小
TCP为保证可靠性,有拥塞机制,UDP没有

问题二:请描述一下三次握手和四次挥手。
三次握手:
1、客户机、服务机都是关闭状态
2、客户机主动打开(此时服务机被动打开,结束关闭状态,进入等待聆听状态)
3、客户机发起发出SYN请求,并发送一个序号,此时客户机进入连接请求发送状态,进行等待【第一次】
---- SYN处于20字节(20*8=160位)的TCP报文的第107-112位(看图是在111位)
---- SYN代表:发起一个新连接
4、服务机接收到建立连接请求SYN,并回复客户机的seq序号为ACK(确认序号有效,ack = seq+1)【第二次】
发起一个连接建立请求SYN,结束等待聆听状态,进入SYN-RCVD状态
---- ACK代表确认序号有效
5、客户机接收到服务器发送来的ACK、SYN,结束SYN-SEND状态,回复ACK字段以及seq,进入准备通信阶段【第三次】
6、服务机接收到ACK以及seq字段后,进入准备通信阶段

四次挥手
客户机和服务机此时都是打开通信状态
1、客户机发起主动关闭请求,传递数据FIN,seq,进入终止等待状态(我要关机了,你准备一下)
2、服务机接到数据,返回一个ACK,确认序号,返回seq,被动进入关闭等待状态,并给上层应用进程发送通知(好,我开始准备,你也准备吧,上层大佬,他要关机了,我要下线了)
3、客户机接到服务机的数据,进入终止等待的状态
4、服务机给客户机返回一个ACK以及ack序号,发送FIN以及seq,服务机进入最后确认状态(我准备完了,可以关了,你还有事吗?)
5、客户机接收服务端数据,返回ACK和ack,seq数据,并进入时间等待状态(我没事了,你关吧,我马上关)
6、服务机接收到客户机消息,关机
7、客户机等待状态一段时间,关机
TCP首部
三次握手

  • 网络层:

这个地方常见的协议就是IP、ICMP、IGMP了。

延伸问题:
ping使用的协议是——?
答:ICMP

  • 数据链路层:

这个地方用的比较多的是ARP和RARP协议了

好,下面是放图了
第一张图:
四层、五层、七层进行了对照
(不用告诉我每层的名字和我说的存在不一样,我知道)
计算机网络体系
第二张图:
将通信过程与四层进行了对照
在这里插入图片描述

4. 数据帧大概的封装和分发

其实计算机底层都是二进制,大家都知道,这个地方需要了解一点东西:
二进制
8比特(bit)
1字节
简单来说,一个二进制位,就是0或1,又称1bit
8个0/1组成就是一个字节

好,讲重点。
这个地方,先放图,不然可能不好懂
最先放上从别人那边复制来的图:简单明了
在这里插入图片描述
第二张图:封装
就是加每一层协议的首部信息 数据图一:封装过程
第三张图:分发
去首部
分用过程
这个地方出现2个概念:封装分用
封装就是你要寄快递,你把这个东西打包一下
分用就是别人要收你的快递,就要拆包裹

我主要想写一下4层,所以封装,我们将上面两个看做一层。

  • 封装
    对应的操作步骤:
    用户a向百度(www.baidu.com)发起请求,传输数据给百度
    那么对应这个图来看,就是
    1、首先,有个用户数据要传输了,此时对应数据链路层
    2、然后,数据要进行网络传输,那么就分为TCP传输还是UDP传输,不同的传输,对应不同的首部信息,这个时候,就要添加上TCP或者UDP的首部信息了,此时对应运输层
    3、我们到百度的服务器距离还是很远的,中间会经过好多个路由器,那么怎么走呢?这个时候就到了网络层,会给你进行IP路由寻址(这是一个知识点,不是一言两句就能讲完,知道就好了,我也还没弄清),此时对应网络层
    4、好,我们终于到了以太网中,这个时候,就要加上我们的以太网首部信息,此时对应数据链路层

注意:这个时候我们已经不知不觉添加了好多个首部信息,后面这些首部信息中会有报文字段,后面再说。。。。。。。

  • 分用
    接收方(此处是百度),比如我们进行的是HTTP请求,那么在百度服务器的80端口,就会接收到我们发来的数据报信息
    PS:这个地方又提到了端口,简单来说,就是类似人类世界的门牌号,每天有不同的人来敲门,有找你的,有敲错的,还有骚扰你的,这个时候,怎么看是不是找你的?——敲你的门就是找你的,还有通过携带的信息,判断是正经找你还是骚扰你的。

回归正题:
分用就是“拆快递”
1、首先要去掉以太网首部(撕掉快递单)
2、再要去除IP首部(撕掉外包装)
3、最后还要去掉TCP或者UDP首部信息(拆掉盒子)
4、拿到最终的用户数据(收到你的宝贝)

先讲这么多吧,后面打算讲一下下面内容,备注一下,怕忘了。
1、每层主要的协议,报文包含哪些字段,干什么用?
2、IP路由协议(此处要先讲一下网络号)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值