Linux网络编程系列-TCP传输控制】的更多相关文章

滑动窗口(sliding window) 滑动窗口是用于流量控制的,发送端根据接收端的处理能力发送数据,不至于造成过多的丢包. 是发送方和接收方间的协调,对方的接收窗口大小就是自己的发送窗口大小. 在TCP头中有一个字段window,这个字段就是接收端告诉发送端自己还有多少缓冲区可以接收数据.发送端根据这个字段的值来发送数据,当值为0时就停止发送. 发送端和接收端各自维护着一个窗口,发送的滑动窗口控制可以发送的数据大小,接收端的窗口控制可以接收数据的大小. 发送端:LastByteAcked指向…
### OSI:open system interconnection ### 开放系统互联网模型是由ISO国际标准化组织定义的网络分层模型,共七层 1. 物理层:物理定义了所有电子及物理设备的规范,数据传输单位为比特(b),本层定义规范有EIA/TIA RS-232.RJ-45等,实际是由设备如网卡等 2. 数据链路层:对物理层收到的比特流进行数据成帧.提供可靠的数据传输服务,实现无差错数据传输.本层数据单位为帧(frame).本层规范SDLC.PPP.STP等,使用设备如switch交换机等…
实例: client #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> const int MAXLINE = 100; void str_cli(int sockfd) { char recvline[MAXLINE]; string str; getline(cin, str); while (!str.empty()) {…
[Linux网络编程]TCP网络编程中connect().listen()和accept()三者之间的关系 基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: connect()函数对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三次握手,而这个连接的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知 Linux 内核,让 Linux 内核自动完成 TCP 三次握手连接(三次握手详情,请看<浅谈 TCP 三次握…
基于 TCP 的网络编程开发分为服务器端和客户端两部分,常见的核心步骤和流程如下: connect()函数:对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三次握手,而这个连接的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知 Linux 内核,让 Linux 内核自动完成 TCP 三次握手连接,最后把连接的结果返回给这个函数的返回值(成功连接为0, 失败为-1). 通常的情况,客户端的 connect() 函数默认会一直阻塞,直到三次握手…
获取和设置套接口选项的方法有: getsockopt/setsockopt fcntl ioctl getsockopt/setsockopt 这两个函数仅用于套接口(socket)的设置,另外两个函数可以对任意的文件描述符进行设置. #include<sys/socket.h> int getsockopt(int sockfd, int level, int optname, void* optval, socklen_t* optlen); int setsockopt(int sock…
1.TCP和UDP TCP是长连接像持续的打电话,UDP是短消息更像是发短信.TCP需要消耗相对较多的资源,但是传输质量有保障,UDP本身是不会考虑传输质量的问题. 2.网络传输内容 我习惯的做法是直接通过TCP传送结构体,当然前提是收发两端都在程序里对目标结构体有充分的定义.特别说明的一点是,要小心收发两端处理器的大小端问题!而且传输信息头里必须包含长度信息,而且通用的是大端.但是,这里的长度和结构体,我选择用小端进行传输. 3.TCPserver实现 参考了别人多线程的回调写法,看起来不错.…
1.进程和程序 程序是一个可执行文件,而一个进程是一个执行中的程序实例.一个进程对应于一个程序的执行,进程是动态的,程序是静态的,多个进程可以并发执行同一个程序.比如几个用户可以同时运行一个编辑程序,每个用户对此程序的执行均作为一个单独的进程. 2.进程控制的系统调用一个进程可以启动另一个进程,进程之间形成层次结构,而进程树的顶端是一个控制进程,一个名为Init的程序的执行,该进程是所有用户进程的祖先.主要的系统调用有 fork()   通过复制调用进程来建立新的 进程,是最基本的进程建立操作…
一.基础理论篇 01.网络协议入门 02.LAN.WAN.WLAN.VLAN 和 VPN 的区别 03.IP 地址介绍 04.广播地址介绍 05.无连接和面向连接协议的区别 06.因特网的IP协议是不可靠无连接的,那为何当初不直接把它设计为可靠? 07.C/S和B/S架构的区别 二.初级实践篇 08.编程准备:字节序.地址转换 09.套接字的介绍 10.UDP编程 11.绑定( bind )端口需要注意的问题 12.UDP广播 13.UDP多播 14.TCP编程 15.TCP中connect()…
以下载链接"http://www.boa.org/boa-0.94.13.tar.gz"为例: 断点续传实验大概步骤: ===================== 1,使用gethostbyname()获取站点"www.boa.org"的IP地址 2,以"boa-0.94.13.tar.gz"为例,构建HTTP请求报文首部: char *httpreq = "GET /boa-0.94.13.tar.gz HTTP/1.1\r\n&qu…