写在前面:本文章是针对《计算机网络第七版》的学习笔记html
运输层4——TCP可靠运输的工做原理socket
运输层8——TCP运输链接管理操作系统
[TOC]### 1. TCP最主要的特色计算机网络
TCP是面向链接的运输层协议。也就是说TCP在使用以前,必须先创建TCP链接。
每个TCP链接中只能有两个端点,也就是说TCP是点对点的通讯。
TCP提供可靠交付的服务,无差错,不丢失,不重复,按序到达。
TCP提供全双工通讯。TCP容许通讯双方的应用进程在任什么时候候都能发送数据。TCP链接的两端都设有发送缓存和接收缓存,用来临时存储双向通讯的数据。
面向字节流。TCP中的“流”是指流入到进程或从进程中流出的字节序列。
面向字节流:虽然应用程序和TCP的交互是一次一个数据块(大小不等),可是TCP把应用程序交下来的数据只看出一连串的无结构字节流。TCP不知道字节流的具体含义,也不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块之间的大小关系。可是接收方应用程序收到的字节流必须与发送方发送的字节流彻底一致。以下图所示:
上图所示只是一个虚链接,并非正在的物理链接。实际上,TCP报文段要先发送到IP层,加上IP首部后,再传送带数据链路层,再加上数据链路层的首部和尾部后,才离开主机发送到物理链路。
TCP的端点称为套接字(socket)或者插口。能够表示为:
套接字 = (IP地址:端口号)
每一条TCP链接惟一地被通讯两端的两个端点所肯定。即:
TCP链接 ::= {socket1, socket2} = {(IP1:port1), (IP2:port2)}
ps:同一个IP地址能够用不少个不一样的TCP链接,而同一个端口号也能够出如今多个不一样的TCP链接中。
容许应用程序访问连网协议的应用编程接口API,即运输层和应用层之间的一种接口,称为socket API。
在socket API 中使用的函数名也叫作socket。
调用socket函数的端点也称为socket。
调用socket函数时,其返回值称为socket描述符,也能够简称为socket。
在操做系统内核中的连网协议的Berkeley实现,称为socket实现。