计算机网络
2022-03-30 本文已影响0人
bowen_wu
计算机网络与传统电信网络
计算机网络分层模型
分层模型.jpeg- OSI分层模型
- 分层实现抽象和隔离
- 传输层(Transport Layer)是 TCP/UDP 协议 => 传输层有Port
- 网络层是 IP 协议 => 网络层有IP
- 网络层到传输层是为了实现多路复用。在同一个IP地址,可以向多个不同的应用程序传输数据包而不互相影响 => 网络层的多路复用 => multiplexing
- 网络层到传输层通过端口(port)区分 => 65536个port(0-65535)
TCP
TCP.pngTransmission Control Protocol(TCP) 传输控制协议,TCP 基于流的协议。特点
- 面向连接
- 点对点
- 可靠交付
- 面向字节流
UDP
User Datagram Protocol(UDP) 用户资料包协议,其在视频聊天和语音中应用较广。其特点:
- 无连接的
- 尽最大可能交付
- 面向报文的
Socket
Socket 就是四元组,即原IP,原端口,目标IP,目标端口所组成的四元组。多个客户端可以连接同一个服务端,每一个四元组即一个 Socket 或 Socket 连接
Code
知识点
- 为什么没有100%可靠的通信协议 => 红蓝军问题
- IPv4 & IPv6
- IP
- 为什么有了TCP还要创建 HTTP、FTP等等协议?
答:TCP基于流,在某些场景下流不适用。如:HTTP,向服务器发送一个请求,服务器给你一个响应,此时请求和响应可以看成数据包。如果要在TCP上面传输数据包,TCP没有数据包的概念,如果想在TCP上传输数据包,可以有以下方法():- 定长
- 自己设计协议(包的头两个字节表明包的大小)
- 自定义分隔符(如:0xff0xff是包的边界)
- HTTP 协议就是工作在 TCP 协议上的字节流,HTTP 协议只是规定了这些字节流应该如何被组装成有意义的 HTTP 的 header 和 body
- 为什么TCP是可靠传输的? // TODO
- 为什么TCP/UDP的端口号只能是从0-65535? => 在 TCP 协议中只给它分配了16bit,2个byte => 2 ^ 16
- 以太网
- Content-Type 默认字符集 iso-8859-1,Content-Type 可以设置字符集