- 博客(75)
- 资源 (15)
- 收藏
- 关注
原创 《网络协议》TCP 的交互数据流
TCP 报文段所携带的应用程序数据按照长度分为两种:交互数据和成块数据。交互数据仅包含很少的字节。使用交互数据的应用程序(或协议)对实时性要求高,比如 Telnet、ssh 等。成块数据的长度则通常为 TCP 报文段允许的最大数据长度。使用成块数据的应用程序(或协议)对传输效率要求高,比如 FTP。
2014-11-30 20:54:13 2244 2
原创 《网络协议》图解 TCP 连接建立与释放
TCP 是面向连接的、可靠的字节流协议。因此,在传输数据之前通信双方必须建立一个 TCP 连接,建立 TCP 连接需要在服务器和客户端之间进行三次握手。通信双方数据传输完毕之后进行连接释放,释放连接需要在通信双方之间进行四次挥手。
2014-11-30 16:36:23 4123 5
原创 《网络协议》TCP 协议
TCP 和 UDP 都使用相同的网络层 IP,但是与 UDP 不同的是,TCP 是面向连接的、可靠的字节流协议。因此,在传输数据之前通信双方必须建立一个 TCP 连接。TCP 通过检验和、序列号、确认应答、重发机制、连接管理以及窗口控制等机制实现可靠性传输。
2014-11-29 10:42:26 3142
原创 《网络协议》UDP 协议
UDP 是无连接、不可靠的数据报传输层协议,为应用程序发送和接收数据报,只是将数据报的分组从一台主机发送到另一台主机,但并不保证数据报能够到达另一端,任何必须的可靠性都由应用程序提供。在 UDP 情况下,虽然可以确保发送消息的大小,却不能保证消息一定会达到目的端。没有超时和重传功能,当 UDP 数据封装到 IP 数据报传输时,如果丢失,会发送一个 ICMP 差错报文给源主机。 即使出现网络阻塞情况,UDP 也无法进行流量控制。此外,传输途中即使出现丢包,UDP 也不负责重发,甚至当出现包的到
2014-11-27 21:43:55 2095
原创 《网络协议》IP 分片与 TCP 分段
采用 TCP 协议进行数据传输是不会造成 IP 分片的,因为一旦 TCP 数据超过了 MSS,则在传输层会对 TCP 数据包进行分段,自然到了 IP 层的数据报肯定不会超过 MTU,所以就不用分片了。而对于 UDP 数据报,如果 UDP 组成的 IP 数据报长度超过了 MTU,那么 IP 数据报显然就要进行分片,因为 UDP 不能像 TCP 一样自己进行分段。传输层中的 TCP 会分段,网络层中的 IP 会分片。IP 层的分片更多的是为运输层的 UDP 服务的,由于 TCP 自己会避免 IP 的分片,所以使
2014-11-27 19:15:13 2557
原创 《网络协议》TCP 与 UDP 协议基本概述
传输层主要功能为两台主机上的应用程序提供端到端的通信,通过端口号识别两台主机上相对应程序之间进行通信。传输层中最主要的两个协议就是 TCP 和 UDP,可以根据 IP 首部的协议字段来识别传输数据的协议类型。
2014-11-27 09:54:17 3088
原创 《网络协议》路由协议
在互联网中,网络结构是相当复杂的(存在复杂的局域网或广域网),若想要将数据包从一个主机成功发送到目的主机,则需要合理的路由将数据转发最终发送到目的主机。而要使路由能够正确的工作,需要路由控制模块和相关的路由协议来支持路由的工作。
2014-11-26 17:03:01 2308
原创 《网络协议》ICMP 协议
CMP 经常被认为是 IP 层的一个组成部分,它传递差错报文以及其他需要注意的信息。ICMP 报文通常被 IP 层或更高层协议(TCP 或 UDP)使用。ICMP 报文是在 IP 数据报内部传输的。IP 协议是不可靠协议,不能保证 IP 数据报能够成功的到达目的主机,无法进行差错控制,而 ICMP 协议能够协助 IP 协议完成这些功能。
2014-11-26 10:34:35 2731
原创 《网络协议》ARP 协议和 RARP 协议
在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的 MAC 地址(硬件地址)。而在 TCP/IP 协议中,网络层和传输层只关心目标主机的 IP 地址。这就导致在以太网中使用 IP 协议时,数据链路层的以太网协议接到上层 IP 协议提供的数据中,只包含目的主机的 IP 地址。 ARP 是一种地址解析协议,是一个位于 TCP/IP 协议栈中低层的协议,主要是负责将 IP 地址解析为对应的 MAC 地址。ARP 协议只适用于局域网。另外,当发送主机和目的主机不在同一个局域网
2014-11-25 10:02:10 2423
原创 《网络协议》IP 网际协议
IP 是 TCP/IP 协议族中最为核心的协议。所有的 TCP、UDP、ICMP 和 IGMP 数据都是以 IP 数据报格式传输。IP 协议处于网络层,网络层主要是实现点对点的通信。IP 协议是一种不可靠、无连接的协议。不可靠即不能保证 IP 数据报能够成功到达目的端,在传输过程中发生某种错误时,IP 协议会丢弃数据报,然后发送 ICMP 消息给信源端,其他任何要求的可靠性必须由上层来提供。无连接即 IP 协议并不维护任何关于后续数据报的状态信息,每个数据报都是相互独立的。因此,IP 数据报可以不按顺序接收
2014-11-24 21:18:02 2307
原创 《网络协议》端到端与点到点通信
本文介绍了端到端与点到点之间的概念和区别。数据传输的可靠性是通过数据链路层和网络层的点对点和传输层的端对端保证的。端到端与点到点是针对网络中传输的两端设备间的关系而言的。
2014-11-24 09:37:04 4445
原创 《unix高级环境编程》终端 I/O——终端 IO 基本概述
本文是对终端IO的基本描述,终端主要是标识符的使用,只有在实践中才能够进一步理解。
2014-11-22 16:08:46 2961 2
原创 《unix高级环境编程》进程间通信—— UNIX 域套接字
UNIX 套接字可在用一台机器上实现进程间通信,比因特网域套接字的效率更高。UNIX与套接字提供和数据报两种接口,UNIX域数据报服务是可靠的,就不会丢失消息也不会传递出错。UNIX域套接字是套接字和管道之间的混合物。为了创建一对非命名的,相互连接的UNXI域套接字,用户可以使用socketopair函数。
2014-11-21 21:22:35 1808
原创 《unix高级环境编程》套接字——基于 socket 的编程
客户端:/* 基于TCP协议面向连接的客户端进程 */#include "apue.h"#include #include #include #include "connectre.h"/* 地址的最长大小 */#define MAXADDRLEN 256/* 缓冲区大小 */#define BUFLEN 128/* 外部函数定义,该函数功能是实现套接字连接 *//
2014-11-20 20:10:37 2285 2
原创 《unix高级环境编程》套接字——套接字基本描述
在前面部分介绍的:管道、FIFO、消息队列、信号量和共享内存都是同一台计算机上的进程间通信,本节介绍的套接字是可以实现不同计算机之间的远程进程间通信。套接口是网络进程的 ID,在网络中每一个节点都有一个网络地址,也就是 IP 地址,两个进程间通信时,首先要确定各自所在网络节点的网络地址。但是,网络地址只要确定进程所在的计算机,由于一台计算机上同时可能有多个网络进程,所以仅凭网络地址还不能确定是网络中的哪一个进程,因此套接口中还需要其他信息,也就是端口。在一台计算机中,一个端口号只能分配给一个进程,所以,进程
2014-11-19 10:52:37 1549
原创 《unix高级环境编程》进程间通信——消息队列
消息队列是消息的链接表,保存在内核,通过消息队列的引用标识符来访问消息,消息队列对每个消息指定了特定的消息类型,接收消息的进程可以请求接收下一条消息,也可以请求接收下一条特定类型的消息。
2014-11-17 16:12:52 1642
原创 《unix高级环境编程》高级 I/O——非阻塞 I/O
非阻塞I/O使我们可以调用 open、write和read 这样的I/O操作,并使这些操作不会永远阻塞。如果这种操作不能完成,则立即出错返回,表示该操作若继续执行将阻塞。对于一个给定的文件描述符由以下两种方法可以对其指定非阻塞I/O:若调用open 获得描述符,则可指定O_NONBLOCK标志;对已打开的描述符,可以使用fcntl,由该函数打开O_NONBLOCK文件状态标志;测试
2014-11-15 08:56:37 1280
原创 《unix高级环境编程》线程控制——线程私有数据
进程中的所有线程都可以访问进程的整个地址空间,一个线程真正拥有的唯一私有存储是处理器寄存器,甚至栈地址也能被共享,底层实现也没有阻止这种访问。但处理线程私有数据的函数可以提高线程间数据的独立性,维护基于每个线程的数据。在什么时候需要使用这种机制呢?在需要一个变量时,如果所有线程共享相同的值,则可以使用静态或外部数据,就像在单线程程序中那样,但通常需要互斥量来同步跨越多个线程对共享数据的存取
2014-11-13 21:40:02 925
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人