网络基础1

1.TCP/IP ⽹络模型有哪⼏层?
有四层,应用层、传输层、网络层、网络接口层

2.为什么要有TCP/IP协议?
对于同一台设备上的不同进程间通信有管道、共享内存等形式
对于不同的设备之间进行通信就需要使用网络通信,而为了兼容不同类型的设备,就需要一个通用的网络通信协议

3.TCP/IP协议的各层的作用:
应用层只需要实现用户的功能,把信息(报文)传给下一层就行,不需要关注信息的传递,常用HTTP协议和HTTPS协议
传输层负责将应用层传来的信息制作成报文传给下一层,需要明确通信进程的端口,常用TCP和UDP协议
TCP协议采用可靠传输,要保证接收方接收到正确的报文
UDP协议采用不可靠传输,只要能发出去即可
传输层发出的报文有长度限制,但报文过长时,需要分成更小的块进行传输,同时添加TCP头部,称为TCP报文段(段)
接收方传输层需要保证报文传输到正确的进程,使用端口号来区分不同的应用

网络层负责将数据从一个设备传到另一个设备,考虑数据通过网络中的哪一个节点和路径进行传输,常用IP协议
网络层会在传输层的报文段添加IP头部,制成IP数据报
不同的设备基于IPv4地址进行区分,IPv4一共32位
一部分表示网络号,该主机所属的子网
一部分表示主机号,该主机属于该子网的哪一个主机
对IP地址使用子网掩码进行按位与运算就可以得到网络号和主机号
IP协议的另一个作用是路由,通过IP地址找到数据在网络中传输的下一条路径

网络接口层在IP数据报的基础上,添加帧头帧尾将其封装成帧,实现相邻的两个设备之间的数据传输。

4.用户输入网址到显示网页之间经历了什么:
主要是用户客户端和网站服务器之间的网络通信

第一步就是解析网址,我们需要知道先什么服务器申请访问什么文件,以便生成HTTP请求消息

第二步要使用DNS服务器来查询服务器域名对应的IP地址

第二步就是将数据传输任务交给操作系统的协议栈来完成
协议栈包括传输层和网络层

先将数据传给传输层,使用TCP或者UDP协议
生成TCP报文段的具体内容(根、目标端口号;包序号;确认号;连接状态位;通信双方窗口大小、流量控制、拥塞控制)
TCP传输前需要三次握手建立连接,保证双方都有发送和接收的能力
就是接收方先开始监听,发送方申请,接收方同意,发送方同意接收方的同意,开始传输
然后就是生成TCP报文

再将TCP报文交给网络层,添加IP头,制成IP数据报
IP头部包含源地址IP和目标地址IP、传输层协议号等

第三步就是在网络接口层实现相邻设备之间的点到点的传输
首先将IP数据报加上帧头帧尾封装成帧,再通过网卡发送出去

第四步就是通过交换机和路由器将数据传输到正确的服务器中,
服务器逐层剥去信息的头部,最后读取信息

第五步服务器会按类似的步骤将信息发给用户客户端

总结:%%%%%%%%%%%%%%
应用层的HTTP报文、查询通信进程的端口号、生成传输层的TCP报文段、去DNS服务器找目标主机IP地址、生成网络层的IP数据报、使用ARP协议找到目标主机MAC地址、生成数据链路层的帧、转化为物理层的比特流
通过网卡传出去、在以太网交换机记录查询下一步的交换机接口,再经过路由器转发,最后到达服务器

5.Linux 系统是如何收发⽹络包的?
总的来说,Linux系统是基于TCP/IP四层模型来进行网络通信的,包括应用、传输、网络、网络接口
当发送数据包时,(没有应用层的HTTP头部,)需要进行系统调用Scoket层,进入操作系统内核态,将待发送数据写入缓冲区
,传输层添加TCP头部,网络层添加IP头部,网络接口层添加帧头帧尾,最后将数据放入环形缓冲区,等待发送
接收时反向操作

区别:
放 待处理数据的 Scoket层缓冲区 ,
以及 放 待发送数据的 环形缓冲区

学完网络层后理解的输入网址到看到网页的过程:
先生成HTTP请求报文,将带发送的数据存放到scoket层缓冲区
再将源主机进程与目标主机进程信息制作成TCP或者UDP首部,制成报文段
去DNS服务器找到目标主机的IP地址,结合协议类型、生存时间、分片信息等制成IP数据报
基于路由选择协议找到下一跳路由器
基于ARP协议通过缓存或者是广播信息找到下一跳的路由的MAC地址,结合差错检验信息等
为IP数据报添加帧头帧尾,封装成帧
再在物理层转化为比特流,放于环形缓冲区等待发送
通过网卡发送到下一跳的路由器
经过路由选择协议设置的路径到达目标服务器
再经历一遍物理层、数据链路层、网络层、传输层,层层剥离传输信息,还原报文数据部分
服务器收到后,将主机需要的信息再使用类似的方法发送回主机

posted @   atopes  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示