TCP/UDP

UDP为用户数据报协议,提供无连接服务,每个数据报都有一定长度。UDP不关心数据是否发送成功,这一切需要上层来保证。
TCP为传输控制协议,提供面向连接,给用户提供全双工的字节流。TCP关心确认、超时和重传等细节。tcp提供流量控制,告诉对方自己的通告窗口(advertised window)

TCP连接的三次握手
TCP在建立连接的时候需要三次交互:
首先,服务器端需要创建SOCKET,并执行bind,listen,监听端口
1。客户端调用connect函数,这将导致客户端发送一个SYN分节,在SYN中将标明客户端在后续的发送数据中使用的初始序列号k。
2。服务器端对该SYN进行确认,返回一个ACK,在ACK中含有服务器期待客户端后续数据的序列号,通常为K+1,另外服务器还发送一个同步分节SYN,里面标明服务器端即将发送数据的初始序列号J。
3。客户端对该SYN进行确认,同时含有J+1。
一般每个SYN中含有MSS选项,用来通知对方自己的所能接受的最大分节大小。

关闭TCP连接
1。某个应用程序调用close,称这一端为主动关闭(active close)。该端将向另一端发送一个FIN分节,表明数据发送完毕。
2。收到FIN的一端执行被动关闭(passive close)。TCP对该FIN进行确认,并将该FIN作为文件结束符传递给应用程序。
3。一段时间后,收到FIN的应用程序调用close。这将导致该另一端发送一个FIN。
4。主动关闭这一方对该FIN进行确认。
主动关闭一方在发送FIN后将进入TIME_WAIT状态。该状态将持续最长分节生命期MSL的两倍。

主要是为了:
 1.实现终止TCP全双工连接的可靠性
 2.允许老的重复分节在网络中消失

在IPv4中,一个ip数据报的最大大小是65535字节,包括ip头部。当一个IP数据报发出时,如

果他的大小超过相应链路的MTU,IPv4将会对数据报执行分片。IPv4主机会对其产生的数据报

执行分片,IPv4路由器对其转发的数据报也会执行分片。另外,IPv4头部有一个选项DF,用来

表示该数据报不允许分片。如果一个路由器收到一DF设置的数据报且该数据报大小超过MTU,

则会产生一个ICMPv4的出错消息。

每个TCP套接字有一个发送缓冲区,当调用write时,内核将从应用程序的缓冲区中拷贝所有

数据到套接口的发送缓冲区。当套接字的缓冲区不够大,应用程序将被挂起直到套接字的缓

冲区可以容纳应用程序的缓冲区。在TCP将缓冲区的数据发送出去后,他将在收到对方的确认

后才将发送数据删除。
TCP以MSS大小或更小的块发送数据到IP,其中MSS是由对方通告的。如果对方为通告则用536


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值