传输层
传输单位是TCP报文段或UDP数据报,任务是负责两个进程(端口)之间的通信(端到端);复用是发送方不同的进程可以使用同一传输层协议传输数据,分用是接收方在传输层剥去报文首部可以将这些数据正确交付目的应用进程;传输层对整个报文进行差错检测。
3.1端口
端口标识主机中的应用程序,进程数据通过端口向下交付给传输层,端口号长度为16bit,可以标识65536个不同的端口号,端口号只具有本地意义!
结合端口,网络中使用发送和接受方的套接字socket(主机IP+端口号)组合来标识端点
3.2TCP
尽管下层的网络不可靠,但可以加入一些逻辑使其可靠,面向连接的tcp向上提供一条全双工的可靠信道,在传送数据前需要先建立连接,在数据传送结束后释放连接,为了可靠传输,TCP加入了如确认、流量控制、计时器和拥塞控制等,不仅使tcp头部大,占用的处理机资源也会多,时期主要适用于更可靠和更重要的场合如文件传输协议FTP,超文本传输协议HTTP和远程登录TELENT等。
tcp保证传输的可靠、有序、无丢失和不重复,特点是:
(1)面向连接(每条tcp连接只能是一端到一端);
(2)全双工(允许双方任意发送数据,发送方的缓存临时存放tcp准备发送和tcp已发送但未确认的数据,接收方则缓存按序到达但未读取的数据和未按序到达的数据);
(3)面向字节流,虽然应用程序交给tcp固定或者不固定的数据块,但tcp仅将它们视为无结构的字节流。
tcp报头最短需要为20字节:
序号字段是报文数据的第一个字节的序号(tcp给每个字节都编了序号);
确认号则是期待收到的下一个报文段的数据的第一个字节的序号(若确认号=N,则