计算机网络学习整理(1)

Alt
计算机网络体系图:传统的OSI网络模型有7层,TCP/IP体系有4层,常用的为5层模型,为了详细说明每层的作用,将会对7层作用先进行说明:

应用层 通俗地说,代表所有能产生网络流量的程序。准确定义是:应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议等等。我们把应用层交互的数据单元称为报文。

表示层 在传输之前进行的处理(对数据进行加密或压缩处理),包括信息的语法语义以及它们的关联。
会话层 不同机器上的用户之间建立及管理会话。利用会话层可以用来查木马,用netstat -n可以查看计算机打开的端口和建立的会话,netstat -nb可以查看占用端口和建立会话的应用程序(可能需要管理者权限) ,用netstat /?可以查看指令的help使用指南
在这里插入图片描述

传输层 它的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。可靠传输TCP(保证数据传输可靠性,如传文件),流量控制,不可靠传输UDP(不用建立会话,不保证数据传输可靠性,如qq发消息,直播等),数据分段编号。****应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。

网络层 控制子网的运行,主要负责选择最佳路径和规划IP地址 (IPV4,IPV6),使用IP协议, 数据段在这一层加IP地址,变成数据包也是路由器所在层,标准的说法是:**互联网是由大量的异构网络通过路由器相互连接起来的。**互联网使用的网络层协议是无连接的网际协议(Intert Protocol)和许多路由选择协议,因此互联网的网络层也叫做网际层或IP层。

数据链路层 **数据链路层将网络层交下来的 IP 数据报组装成帧。**物理寻址,同时将原始比特流转变为逻辑传输线路。是帧的开始和结束所在的层,实现透明传输和差错校验,也是交换机所在的层。

物理层 定义网络设备的接口标准,电气标准(电压标准)。以Bit流进行传输,IEEE 802.2。

数据传输封装过程:
Alt
———————————————————————————————————

TCP/IP之TCP

传输控制协议 TCP(Transmission Control Protocol)是提供面向连接的,可靠的数据传输服务。需要将传输的文件分段需要建立会话进行流量控制

1. 什么是三次握手:

Alt

  1. 客户端–发送带有 SYN 标志的数据包–一次握手–服务端
  2. 服务端–发送带有 SYN/ACK 标志的数据包–二次握手–客户端
  3. 客户端–发送带有带有 ACK 标志的数据包–三次握手–服务端
2. 为什么要三次握手:

三次握手最重要的就是双方确认自己与对方发送与接收正常!
弱弱:建立可靠的通信信道。
如何确认:
在三次握手之1中:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常。
在三次握手之2中:Client就可以确认对方发送和接收正常,自己发送和接收正常。
在三次握手之3中:Server 就可以确认自己发送正常,对方接收正常。
至此,双方确认自己和对方发送和接收正常。
同时,这种方式还可以防止已失效的报文段。客户端发送第一次SYN后,由于在某个网络节点长时间滞留,导致客户端没有收到ACK报文,于是重发,如果这时只有两次握手,服务器会第一次接收到SYN后再次接受到SYN,然后建立连接后再次建立连接。但是,如果是三次握手,可以保证客户端在第二次收到ACK时不会在第三次握手时再向服务器发送ACK。

3. 其它握手小问题:

为什么要传回SYN
接收端传回发送端所发送的 SYN 是为了告诉发送端,我接收到的信息确实就是你所发送的信号了。
传了 SYN,为啥还要传 ACK
双方通信无误必须是两者互相发送信息都无误。传了 SYN,证明发送方到接收方的通道没有问题,但是接收方到发送方的通道还需要 ACK 信号来进行验证。

4. 什么是四次挥手

Alt

  1. 客户端-发送一个 FIN,用来关闭客户端到服务器的数据传送
  2. 服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1 。和 SYN 一样,一个 FIN 将占用一个序号
  3. 服务器-关闭与客户端的连接,发送一个FIN给客户端
  4. 客户端-发回 ACK 报文确认,并将确认序号设置为收到序号加1
5. 为什么要四次挥手

任何一方都可以在数据传送结束后发出连接释放的通知,待对方确认后进入半关闭状态。当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。即在关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接。因此,为了客户端提出关闭连接后,服务器继续发送数据,服务器的ACK和FIN一般都会分开发送,从而导致多了一次。
需要注意的是,客户端最后发送ACK后,会等待2MSL(最长报文段寿命)后释放连接,原因有二:

  1. 服务器有可能没有收到客户端的ACK,如果客户端立马关闭,会导致服务器重发FIN,但是没有响应,导致服务器无法关闭;
  2. 通过这种方式,还可以防止已失效的报文段。客户端在发送最后一个ACK之后,再经过经过2MSL,就可以使本链接持续时间内所产生的所有报文段都从网络中消失。保证新连接中不会有上一次TCP连接的旧报文。

更多握手和挥手时的状态可以参考这篇博文:https://blog.csdn.net/qzcsu/article/details/72861891
——————————————————————————————

UDP

用户数据协议 UDP(User Datagram Protocol)是尽最大努力的数据传输服务,与TCP不同,它不保证数据传输的可靠性一个数据包就能够完成数据通信不分段不需要建立会话不需要进行流量控制

——————————————————————————————

常见的应用层协议使用的端口:

http=TCP+80
https=TCP+443
远程桌面RDP=TCP+3389
ftp=TCP+21
访问共享文件夹=TCP+445
发邮件SMTP=TCP+25.
收邮件POP3=TCP+110
远程终端协议telnet=TCP+23
微软服务器SQL=TCP+1433
DNS=UDP+53

[参考]
https://www.bilibili.com/video/av9876107?from=search&seid=16570351080075124318 ------B站老年视频
https://github.com/Snailclimb/JavaGuide/blob/master/docs/network/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C.md -----Github上的TCP/IP面试总结

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值