《TCP/IP协议详解:卷一》读书笔记---IP、UDP、TCP协议基础
来源:互联网 发布:apache windows 编辑:程序博客网 时间:2024/06/03 19:15
IP:网际协议
不可靠:不能保证IP数据报能成功地到达目的地,仅提供最好的的传输服务。
无连接:IP并不维护任何关于后续数据报的状态信息。每个数据报的处理的相互独立。
IP首部
普通的IP首部长为20个字节,除非含有选项字段。
包含的字段:
4位版本、4位首部长度、8位服务类型、16位总长度(字节数)、16位标识、3位标志(分片所用)、13位片偏移(分片所用)、8位生存时间(TTL)、8位协议(ICMP、IGMP、TCP、UDP、EGP等等)、16首部检验和、32位源IP地址、32位目的IP地址、选项(如果有)
最左边为最高位,以大端方式传送(网络字节序)。
PS:Ping程序利用ICMP回显请求报文,Traceroute程序利用ICMP报文和IP首部中的TTL字段。
UDP:用户数据报协议
UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。(不可靠、无连接)
UDP首部
大小为8个字节。
包含的字段:
16位源端口号、16位目的端口号、16位UDP长度、16位UDP检验和
TCP:传输控制协议
TCP的服务:
TCP提供一种面向连接的、可靠的字节流服务。
TCP通过下列方式来提供可靠性:
- 应用数据被分割成TCP认为最适合发送的数据块(字节流服务)。
- 当TCP发出一段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。
- 当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒(经爱时延的确认)。
- TCP将保持它首部和数据的检验和
- TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。
- TCP的接收端必须丢弃重复的数据。
- TCP提供流量控制。
TCP的首部
大小为20个字节。
包含的字段:
16位源端口号、16位目的端口号、32位序号、32位确认序号、4位首部长度、16位窗口大小、16检验和、16紧急指针
TCP连接的建立与终止
建立连接协议
1、请求端发送一个SYN段指明客户打算连接的服务器的端口,以及初始化序号(ISN)。这个SYN段为报文段1.
2、服务器发回包含服务器初始序号的SYN报文段(报文段2)作为应答。同时,将确认序号设置为客户的ISN加1以对客户的SYN报文段进行确认。一个SYN将占用一个序号。
3、客户必须将确认序号设置为服务器的ISN加1以对服务器的SYN报文段进行确认(报文段3)
这三个报文段完成连接的建立。这个过程也称为三次握手(three-way handshake)。
连接终止协议(4次白握手)
1、应用程序关闭,TCP客户端发送一个FIN,用来关闭从客户到服务器的数据传送。
2、服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。同时TCP服务器还向应用程序传送一个文件结束符。
3、当服务器程序需要关闭从服务器到客户的数据传送时,会导致它的TCP端发送一个FIN。
4、客户必须对3中的FIN发回一个确认,并将确认序号设置为收到序号加1。
TCP状态变迁图
2MSL等待状态
TIME_WAIT状态也称为2MSL等待状态。每个具体TCP实现必须选择一个报文段最大生存时间MSL(Maximum Segment Lifetime)。它是任何报文段被丢弃在网络内的最长时间。
为什么客户端在TIME_WATI状态必须等待2MSL的时间呢?这有两个理由。
第一,为了保证客户端发送的最后一个ACK报文段能够到达服务器。这个ACK报文段有可能丢失,因而使处在LAST_ACK状态的服务器收不到对已发送的FIN+ACK报文段的确认。服务器会超时重传这个FIN+ACK报文段,而客户端就能在2MSL时间内收到这个重传报文段。
第二,防止“已失效的连接请求报文段”出现在本连接中。客户端在发送完最后一个ACK报文段后,再经过时间2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络消失(寿命为MSL)。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。
详见《计算机网络 5th》--谢希仁 编著
未完待续。。。。。。
- 《TCP/IP协议详解:卷一》读书笔记---IP、UDP、TCP协议基础
- TCP/IP协议详解 卷一 --------UDP
- 读书笔记《TCP/IP详解卷一:协议》
- 《TCP/IP详解,卷一:协议》读书笔记
- 《TCP/IP详解 卷一:协议》读书笔记--IP:网际协议
- 《TCP/IP详解 卷一:协议》读书笔记--IP选路
- TCP/IP协议详解:卷一----笔记(4)UDP
- 《TCP/IP详解 卷1:协议》读书笔记
- 《TCP/IP详解 卷1:协议》读书笔记
- 《TCP/IP详解 卷1:协议》读书笔记
- 《TCP/IP详解卷1:协议》读书笔记
- 《TCP/IP详解 卷1:协议》读书笔记
- 《TCP/IP详解 卷1:协议》读书笔记
- 《TCP/IP详解 卷一:协议》读书笔记--概述
- 《TCP/IP详解 卷一:协议》读书笔记--链路层
- 《TCP/IP详解 卷一:协议》读书笔记--Ping程序
- 《TCP/IP详解 卷一:协议》读书笔记--Traceroute程序
- tcp/ip详解卷1:协议 读书笔记 TCP/IP分层
- 数据结构基础攻略——图(Graph)
- Tomcat Servlet request.getRemoteAddr()所得值为0:0:0:0:0:0:0:1
- JavaScript中的arguments,callee,caller,call,appy
- extern作用详解
- DynamicResource与StaticResource的区别
- 《TCP/IP协议详解:卷一》读书笔记---IP、UDP、TCP协议基础
- Visual Studio 2010——C#的LinkLabel控件的使用
- 周记(三)
- 《编程导论(Java)》电子参考文献索引
- 周记(四)
- 开发者使用JasperReport——通过数据源生成报表
- poj 动态规划题目列表
- 调试技巧
- HDU 2159 FATE