Iridescent-zhang

醉后不知天在水,满船清梦压星河

TCP Note

已经完全理解TCP/IP协议的网络传输过程了

TCP

TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)是互联网的基本协议,也是国际互联网络的基础。

TCP/IP 不是指一个协议,也不是 TCP 和 IP 这两个协议的合称,而是一个协议族,包括多个网络协议,比如 IP、ICMP(Internet Control Message Protocol,互联网控制报文协议)、TCP、UDP(User Datagram Protocol,用户数据报协议)、HTTP(Hyper Text Transfer Protocol,超文本传输协议)、FTP(File Transfer Protocol,文件传输协议)、POP3(Post Office Protocol version 3,邮局协议)等。

TCP/IP的分层结构

TCP/IP 协议族按照层次由上到下分成 4 层,分别是应用层(Application Layer)、传输层(Transport Layer)、网络层(Internet Layer,或称网际层)和网络接口层(Network Interface Layer,或称数据链路层和网络访问层)

应用层包含所有的高层协议,比如 Telnet(Telecommunications Network,远程登录协议)、FTP、SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)、DNS(Domain Name Service,域名服务)、NNTP(Net News Transfer Protocol,网络新闻传输协议)和 HTTP 等。Telnet 允许一台机器上的用户登录远程机器进行工作,FTP 提供将文件从一台机器上移到另一台机器上的有效方法,SMTP用于电子邮件的收发,DNS 用于把主机名映射到网络地址,NNTP 用于新闻的发布、检索和获取,HTTP 用于在 WWW(World Wide Web,万维网) 上获取主页。

应用层的下面一层是传输层,著名的 TCP 和 UDPUser Datagram Protocol,用户数据报协议)就在这一层。TCP 是面向连接的协议,它提供可靠的报文传输和对上层应用的连接服务。为此,除了基本的数据传输外,它还有可靠性保证、流量控制、多路复用、优先权和安全性控制等功能。UDP 是面向无连接的不可靠传输协议,主要用于不需要TCP的排序和流量控制等功能的应用程序。

传输层的下面一层是网络层,该层是整个 TCP/IP 体系结构的关键部分,其功能是使主机可以把数据包(Packet,也称 分组,指的是 在传输时被分割的数据)发往任何网络,并使分组独立地传向目标。这些分组经由不同的网络到达的顺序和发送的顺序可能不同。网络层使用的协议有 IP

网络层的下面是数据链路层,该层是整个体系结构的基础部分,负责接收 IP 层的 IP 数据报,通过网络向外发送,或接收从网络上来的物理帧,抽出 IP 数据报,向 IP 层发送。该层是主机与网络的实际连接层

数据链路层下面就是实体线路(比如以太网络、光纤网络等)。数据链路层有以太网、令牌环网等标准,负责网卡设备的驱动、帧同步(就是从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。
交换机可以在不同的数据链路层的网络之间(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间)转发数据帧,由于不同数据链路层的帧格式不同,交换机要将进来的数据包拆掉包头重新封装之后再转发。

PDU(Protocol Data Unit):协议数据单元 是指对等层次之间传递的数据单位。
不同的协议层对PDU有不同的称谓,在传输层叫作数据段(TCP-Segment)或数据报(UDP-Datagram),在网络层叫作数据包(packet),在数据链路层叫作数据帧(Frame),在物理层是数据位(bit 比特流),在传输层以上的层次叫作数据(data)。
这东西似乎很难有统一的定义,有几篇文章可能有用:
数据帧frame,数据包packet,数据报datagram和数据段segment
PDU(协议数据单元)
帧、数据报、数据包的区别和联系

数据封装成帧后发送到物理传输介质上,到达目的主机后,每层协议再剥掉相应的包头,最后将应用层数据交给应用程序处理。

TCP/IP协议介绍(c.biancheng.net) 讲的还可以,就是各个协议层的PDU分的不是很清楚。


详解TCP协议这篇讲的很不错,一些小瑕疵可以忽略。

还有几篇有一定的可读性
计算机网络 包含计算机许多内容的个人博客
35 张图解被问千百遍的 TCP 三次握手和四次挥手面试题
菜鸟笔记
TCP/IP 网络模型有哪几层关于计算机网络的个人博客

三次握手

三次握手(Three-way Handshake)是指建立一个TCP连接时,需要客户端和服务器总共发送三个包。

三次握手的目的是连接服务器指定端口,建立TCP连接,同步双方的序列号和确认号并交换TCP窗口大小信息,在socket编程中,客户端执行connect()时触发三次握手。

  • 第一次握手:客户端发送一个TCP的SYN标志位 置一的数据包指明客户打算连接的fu’wu

TCP/IP 定义了计算机操作系统如何连入互联网,以及数据传输的标准。
TCP/IP 是为了解决不同系统的计算机之间的传输通信而提出的一个标准,不同系统的计算机采用了同一种协议后,就能相互通信,从而能够建立网络连接,实现资源共享和网络通信。

OSI七层模型

应用层、表示层、会话层、传输层、网络层、数据链路层、物理层