TCP--IP详解之一(基本概念)

1.        TCP面向连接、可靠保证

1.1.       有连接的建立过程

1.2.       发送的数据需要确认,超时则需要重传

1.3.       有序列号,需要重组数据包

1.4.       流量控制,(窗口大小)

1.5.       全双工

UDP如果要可靠,则需要在应用层实现1、2、3、4的功能。

2.        TCP相应的选项

2.1.       窗口大小:对应于设置的接收缓冲区大小(SO_RCVBUF)。

TCP为真正的缓冲区大小。是为了流量控制。如果对方缓冲区不够时,数据不会发送给对方,但是这时候是已经写到本地的发送缓冲区了。另外如果发送缓冲区不够时,数据写操作是不会成功(阻塞,或失败)。写成功只表示放入发送缓冲区,还没发送给对方。且如果没有确认,则不会从缓冲区删除。

UDP则没有缓冲区的概念,其缓冲区大小表示的是一次发送数据时的最大数据报长度,如果超过长度则直接报错。内核以某种形式临时保留用户要发的数据,一旦链路层发送数据后,则删除该缓冲。写成功表示加入了链路层的输出队列,如果队列不能存放该数据,则直接返回ENOBUFS(但实现一般不严格)。

2.2.       MSS:TCP分节的最大数据量(TCP_MAXSEG)

一个TCP分节的最大数据量,为了减少IP层往链路层发送时减少分包。一般为MTU-40(60,IPV6)。MTU一般为1500。因此IPV4一般为1460。最大可以为65535-40(65495)。

2.3.       MTU

链路层上限制的包大小。由物理线路决定的。一般为1500。

3.        时间相关的术语

3.1.       RTT(round-trip time)包的一次往返时间。

3.2.       MSL(maximum segment life)包的最大存活时间,为时间值。

3.3.       TTL(time to live)包的存活时间。为经过的路由器跳数。

4.        TCP关闭

4.1.       Shutdown执行半关闭

4.2.       SO_LINGER设置,影响Close行为。

4.3.       TIME_WAIT状态,2MSL

主动方才会进入。

两个原因需要2MSL状态。一是TCP全双工关闭;二是允许旧的重复分节在网络中消失。

4.4.       CLOSE_WAIT状态

被动关闭的一方,如果已经给对方响应了其FIN,但自己还没有关闭,则处于这个状态。      

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值