第一章 简介
1.1计算机网络、分组报文和协议
计算机网络由一组通过通信信道连接的机器组成,有 host
和 router
,host
是运行了应用程序的计算机。router
能够将信息从一个通信信道转发或传递到另一个通信信道。通信信道是将字节序列从一个 host 传输到另外一个 host 的手段。不同 host 的差异性通过和 router 连接连进行消除
传递的字节序列被称为分组报文,一组报文包括了基本的控制信息和用户数据,要传递这些报文需要定义 protocol,它规定了报文交换的方式和结构以及如何解析,TCP/IP 就是来解决这个问题的。他是一个协议簇主要包含 网络层的 IP 协议,传输层的 TCP 和 UDP 等。网络层负责将分组报文传输到目的地址,IP 协议提供将每组分组报文独立处理分发的能力,每个 IP 报文包含目的主机地址字段。但是 IP 协议不能保证报文完整的百分之百的正确的传递到目标主机,偶尔会丢失报文,报文乱序等。在 IP 协议之上为传输层,TCP 和 UDP 协议是进一步的寻址,他们采用端口号作为地址来区分同一主机上的不同应用,因为 IP 只能发到主机 不能区分应用。所以他们称为端到端的传输协议。
TCP 提供可信赖的字节流信道,他能检测和恢复 IP 层提供的主机到主机信道中可能发生的报文丢失,重复和其他错误。TCP在使用时候要先建立连接所以它是面向连接的协议。建立连接就需要常常提到的三次握手,断开连接采用四次握手。相反 UDP 不能对IP层产生的错误进行修复,他扩展了 IP 层的数据报服务功能使其能够在应用程序间工作。所以它叫做 用户数据报协议,他是不可靠的。
PS: IP 地址和域名不表
1.2 Socket
Socket 是在传输层和应用层之间的一中抽象层,应用程序可以使用 socket 来发送和接收数据就像在磁盘上读取和写入数据一样。TCP/IP 协议簇中的 socket 为 Stream Socket 和 datagram socket,它们分别应用 TCP 和 UDP 协议。一个 Steam Socket 代表了 TCP 连接的一端,TCP/IP 套接字有一个 地址和端口唯一确定。