UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报,UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。
UDP首部的格式:16位源端口号 16位目的端口号 16位UDP长度 16位UDP检验和(检验和只覆盖UDP首部不覆盖任何数据)
DNS域名系统:是一种用于TCP/IP的分布式数据库,提供主机名字和IP地址之间的转换及有关电子邮件的选路信息。
DNS名字服务器的端口号是53,这意味着DNS均支持UDP和TCP访问
在一个TCP连接中,仅有两方进行彼此通信,广播和多播不能用于TCP。
应用数据被分割成最适合TCP发送的数据块。当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段,如果不能及时收到一个确认,将重发这个报文段。
当TCP收到发自TCP连接另一端的数据,它加发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。
TCP还能提供流量孔子。TCP的连接的每一方都有固定大小的缓冲空间。TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。
TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。
1、请求端发送一个SYN段指明客户打算连接的服务器的端口,以及初始序号(ISN)。这个SYN段为报文段1.
2、服务器发回包含服务器的初始序号的SYN报文段作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。
3、客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认
这个过程就叫做3次握手。
建立一个连接需要3次握手,而终止一个连接要经过4次握手。这是由于TCP的半关闭造成的
收到一个FIN只意味着在这一方向上没有数据流动。一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方(收到这个FIN)执行被动关闭。键入quit命令后,它将导致TCP客户端发送一个FINA,用来关闭从客户到服务器的数据传送。当服务器收到这个FIN,她发回一个ACK,确认收到的序号加1,和SYN一样,一个FIN将占用一个序号,同时TCP服务区还向应用程序传送一个文件结束符。接着这个服务器程序就关闭它的连接,导致他的TCP端发送一个FIN,客户必须发回一个确认,并将确认序号设置为收到序号加1.
慢启动:
观察到新分组进入网络的速率应该与另一端返回确认的速率相同而进行工作。提供了拥塞窗口,当与另一个网络的主机建立TCP连接时,拥塞窗口碑初始化为一个报文段,每收到一个ACK,拥塞窗口就增加一个报文段。
拥塞:当数据到达一个大的管道并向一个较小的管道发送时,就会发生拥塞,当多个输入流到达一个路由器,而路由器的输出流小于这些输入流的总和是也会发生拥塞。
TCP提供 了“紧急方法”,使另一端知道有些具有某种方式的紧急数据已经放置在普通的数据流中
拥塞避免和慢启动是两个目的不同、独立的算法。当拥塞发生时,慢启动门限被设置为当前窗口的一半。