TCP/IP之传输层(一)
计算机网络通信是个复杂的问题,为了完成数据通信,必须在数据中添加包头,也就是添加控制信息以保证数据能正确到达目的地,比如为了表示数据的发送方和接收方,则数据包中必须有IP地址;为了检验数据的正确性就必须有检验和。TCP/IP参考模型的内容其实就是围绕包头展开的。
传输层为上层的应用层提供服务,它将应用层送下来的数据交给网络层,最终通过网络层发送到目的地。传输层使得应用层可以使用到通信网络的服务,而应用层却看不到通信网络的服务细节。传输层可以说是应用层访问通信网络的一个中介人。两台主机通信实质上是两台主机上的某个进程在通信,数据的最终目的地是目的主机上的某个进程,而不是目的主机,数据到达了目的主机还没真正结束,还得被交付到该目的主机的相应进程才算真正到达了目的地。
网络层通过IP地址来标识主机,IP地址只能标识一台主机,是不能标识出主机上的某个进程。网络在数据传送过程中负责的范围是从源主机到目的主机(一定要注意是主机到主机),所以通信过程并没有真正完成。
为了完成源进程和目的进程之间的数据通信,必须借助传输层。传输层才能最终保证数据被交付到目的主机的目的进程,使得数据最终到达目的地。网络层为了标识主机采用的是IP地址。而传输层标识进程是采用的端口号。如果要标识一台主机上的某个进程则应该采用IP地址+端口号。例如  主机AIP地址为192.168.0.1)某个进程X(端口号 1000)向主机BIP地址 192.168.1.1)上的某个进程Y(端口号2000 进行通信。那么该数据的源地址: 192.168.0.1 1000 目的地址:192.168.1.1 2000  网络层只会读取IP包头中的IP地址,所以只能完成源主机到目的主机的数据传送。因为端口号是在TCP包头中,网络层只会读取IP包头,是不会读取TCP包头,自然就不知道端口号。那么当然就不知道到底是192.168.0.1上的哪个进程发送的数据,同样也不知道到了主机B 该交给哪个进程,网络层只要把数据送到主机B,它的任务就完成了。应该把该数据包交给哪个进程就是由传输层来完成的。
传输层要完成源进程和目的进程之间的数据交付。这个当然必须借助下面的网络层和数据链路层的功能。传输层还具有其他一些功能,比如:将数据进行分段,以使得大小适合在网络上传输。传输层还进行流量控制和拥塞控制,数据效验等功能。