前言:
学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信息量过大,有太多无法理解的地方,在我第一次点开的时候也有相同的感受,但经过了一段时间项目的学习,对计网有了更多的了解,所以我准备在这次学习的时候做一些记录并且加入一些我的理解,希望能够帮助到大家。
往期笔记可以看专栏中的内容
资料分享:
视频课件分享链接,提取码pho1
计算机网络(第七版) 自顶向下方法分享链接,提取码7ln4
目标:
- 网络应用的原理:网络应用协议的概念和实现方面
- 传输层的服务模型
- 客户端-服务器模式(cs 模式,client / server)
- 对等模式(p2p 模式,peer to peer)
- 内容分发网络
- 网络应用的实例:互联网流行的应用层协议
- HTTP
- FTP
- SMIP / POP3 / IMAP
- DNS
- 编程:网络应用程序
- Socker API
服务器是一直运行再固定的 IP 和端口号来等待客户端来进行请求的,客户端直接与服务器通信,而不能直接与其他客户端通信。
这样的缺点就是可扩展性比较差:
服务器会因为访问量增大到某个阈值而呈现断崖式的下降,如果服务器负载过高,可能需要增加服务器的硬件资源或引入负载均衡等技术来处理更多的请求。
且因为服务器是一个中心化的实体,服务器出现故障或需要维护,整个系统可能会受到影响,等等诸多问题导致其拓展性很差。
进程:在主机上应用程序
不同的主机之间通过交换报文(Message)来通信(应用层的 PAU)
分布式进程之间通信需要解决的问题:
分布式就是在不同计算机上的进程,这里理解为客户端到服务端的通信即可
问题 1:如何标识一个应用进程?
问题 2:传输层提供的服务
层间接口必须要携带的信息
传输层实体(tcp或者udp实体)根据这些信息进行TCP 报文段(UDP数据报)的封装
但这又引出一个问题,每次都需要携带上面的三种信息会导致传输的信息重复,且层间传输的信息量会增大,有没有方法可以解决这个问题呢?
socket
,这个 socket
会以编号的形式存在,且会携带上面的三种信息,以后每次发送请求和接受请求的时候就可以通过 socket
来实现标识的作用。socket
可以看作是在网络中建立通信连接的一种手段,它在应用层和传输层之间提供了一个抽象层,使得应用程序能够通过简单而灵活的方式进行网络通信。Socket 能够解决穿越层间的信息传递问题的原因:
- 抽象网络协议: Socket 提供了一个抽象层,隐藏了底层网络协议的细节。无论是 TCP 还是 UDP,应用程序可以使用相同的 Socket 接口进行通信。这种抽象性允许应用程序在不同的网络协议之间切换,而不必修改主要的通信逻辑。
- 统一的编程接口: Socket 提供了一致的编程接口,无论在不同的网络层次上。通过调用 Socket API,应用程序可以实现对底层网络协议的访问,而 无需关心底层协议的差异。这使得开发者能够使用相似的代码来处理不同的网络通信需求。
- 多协议支持: Socket 不仅支持 TCP 和 UDP,还可以在应用程序层面上支持其他自定义的协议。这种多协议支持使得应用程序能够选择最适合其需求的通信方式,而不受制于特定的网络层次。
- 跨越网络层次: Socket 的设计目标之一就是跨越网络层次,使得应用程序可以在不同的网络层次上进行通信。通过 Socket,应用程序可以在传输层(如 TCP 和 UDP)以及应用层(通过自定义协议)实现通信。
- 灵活性和通用性: Socket 提供了灵活且通用的接口,能够适应不同的网络场景。这种通用性使得 Socket 成为一个广泛应用于各种应用领域的通信工具,从简单的文件传输到复杂的分布式系统通信。
这样就可以做到减少从应用层到传输层之间传递的信息量。
TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是两种不同的传输层协议,它们在使用Socket进行通信时有一些区别。以下是TCP和UDP的Socket在通信中的一些特点:
TCP soket
中包含源主机的 IP 和端口,目标主机的 IP 和端口,所以传输的时候需要 socket
和传输的内容即可;UDP socket
中仅包含了本主机的端口和 IP,所以传输的时候需要 socket
、目标主机的 IP 和端口还有传输的内容
运行在 不同端系统 上的应用如何相互交换报文
HTTP
:用于在客户端和服务器之间传输超文本,是 Web 应用中最常用的协议。HTTP 定义了客户端请求和服务器响应的格式,支持无状态的通信。
应用层需要传输层提供的服务
常见应用需要传输层提供的服务
TCP 与 UDP 可提供的服务
TCP 提供 可靠的传输服务、流量控制、拥塞控制。
UDP 提供 不可靠的传输服务,没有以上的控制各种限制,但换来了更快的速度和更低的延迟。