
网络
Shawei_
这个作者很懒,什么都没留下…
展开
-
TCP流程
TCP详细流程。原创 2018-08-09 09:11:26 · 4062 阅读 · 0 评论 -
TCP 流量控制/拥塞控制
流量控制——TCP支持根据接收端的处理能力,来决定发送端的发送速度。我们知道TCP在接受方有接受缓存区,如果接受缓存区接受满了,会造成什么呢? 流量控制:如果接收端的接受缓存区满了,就接受不了数据了,而发送方还一直的发送数据段给接受方。接受不了就会导致丢包的情况,而丢包,就会导致丢包重传(快速重传的机制)等等一系列连锁的反应。会大大的增加网络复杂情况。解决: 1.TCP中规定,...原创 2018-08-18 14:44:45 · 374 阅读 · 0 评论 -
TCP 延时应答/捎带应答
延时应答 我们知道TCP中,有确认应答机制以保证数据的可靠传输。但是是不是接受方接受到数据就立即返回ACK应答呢?如果是这样,这时候的缓冲区中接收区的数据还没能够处理,缓存区的剩余大小就是窗口大小。但是如果我们延迟一会,等待缓存区中数据被处理,那么剩余的缓存区就会大些——这就是延时应答。ps:假设接收端缓存区大小为1M,一次接收到了500K的数据,现在缓存区中剩余大小为500。但如果我们...原创 2018-08-18 15:05:16 · 5356 阅读 · 0 评论 -
I/O多路转接之select
系统提供select函数来实现多路复用输出/输入模型: 系统调用select是为了使一个程序监视多个文件描述符的状态变化,程序会停在select这里等待,直到被监视的文件描述符有一个或者多个文件描述符发生了状态改变。#include<sys/select.h>int select(int nfds,fd_set *readfds,fd_set *writefds,fd_set...原创 2018-08-19 00:48:17 · 230 阅读 · 0 评论 -
TCP 确认应答/超时重传机制
我们知道TCP协议是传输层协议,它是可靠传输,有连接的传输协议。那么它是依靠什么才能有这个功能的呢?确认应答机制(ACK) TCP将每个字节的数据都进行了编号,即为序列号: 每一个ACK都带有对应的确认序列号,意思是告诉发送者,我们已经收到了哪些数据,下一吃发送数据应该从哪里开始。 如上图,主机A给主机B发送了1-1000的数据,ACK应答,携带了1001序列号。告诉主机A,我已...原创 2018-08-16 15:01:27 · 8017 阅读 · 0 评论 -
网络层 IP协议、NAT技术
网络层:最主要的功能就是:在复杂的网络环境中确定一个合适的路径。如何在网络层中准确的找到合适的路径发送数据呢? 这就需要我们的IP协议了。IP协议基本概念: 主机:配有IP地址,但是不能进行路由控制的设备 路由器:即配有IP地址,又能进行路由控制 节点:主机和路由器的统称我们看下一个IP协议的格式: IP地址:网络号和主机号 网络号:保证相互连接的两个网段具有不同的标识...原创 2018-08-19 23:00:19 · 493 阅读 · 0 评论 -
ICMP协议(ping命令,traceroute命令)
ICMP协议 ICMP协议是一个网络层协议。 我们在建立好网络通信的时候,肯定要进行网络是否通畅。我们知道IP协议并不提供可靠的传输,无法通过IP协议来反馈我们的网络是否通畅,TCP又是传输层的协议,并不能在这里使用,所以提出了ICMP协议。专门为了测试我们网络是否通畅。ICMP功能 1.确认IP包是否成功到达目的地址 2.通知在发送IP包过程中丢包的原因 3.ICMP也是基于IP协...原创 2018-08-19 23:52:52 · 11967 阅读 · 0 评论 -
TCP 滑动窗口/快速重传机制
我们知道TCP有确认应答机制,对每一个发送的数据段,都要给一个ACK确认应答,收到ACK后再发送ACK中携带的序列号。这样保证了可靠传输。但是有时数据往返的时间比较长时,性能就比较差了。 既然这样一发一收的方式性能较低,那么我们一次发送多条数据,就可以大大提升性能。TCP中提出了滑动窗口这个机制。这个机制是什么?我们看看… 窗口大小是指无需等待确认而可以继续发送数据的最大值,上面...原创 2018-08-17 12:11:19 · 7585 阅读 · 4 评论 -
网络编程面向字节流—粘包问题
粘包:通俗的讲,在我们买包子的时候,我们可以看到蒸笼中,每个包子之间都隔开了空间,或者是用纸把每个包子都隔离开了,不让它们粘在一起。如果让两个包子之间无缝隙的在粘在一起。当你买包子时,老板把一个包子装起来,另个一个包子的皮就会粘到你的这个包子来。两个包子都多了点,另一个少了点。包子不完整了,外观不完美了。同样的,在我们TCP面向字节流传输过程中,我们也会遇到这样的问题。粘包中的“包”指的是...原创 2018-08-17 16:40:17 · 465 阅读 · 0 评论 -
TCP/UDP 协议格式
UDP协议格式: 16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度 即:一个UDP能传输的数据最大长度是64K 如果我们要传输的数据大于64K,那么我们需要在应用层手动分包,多次发送,并在接收端手动拼装 UDP没有发送缓冲区,应用层发送数据,由内核传给网络层协议进行后续额传输动作。 UDP有接受缓存区,但是接受缓存区不能保证和发送的的数据顺序一致,如果接受区缓存满...原创 2018-08-12 12:16:16 · 2901 阅读 · 0 评论 -
IP地址转换函数
IPv4的socket网络编程中,sockaddr_in中的成员struct in_addr sin-addr 表示32位的IP地址,但是通常我们使用的是点分十进制的字符串表示IP地址,那么这两个如何转换呢?#include<arpa/inet.h>字符串转in_addr的函数:int_addr_t addr_t inet_addr(const char *strptr);...原创 2018-08-07 16:06:10 · 4387 阅读 · 0 评论 -
HTTP协议格式
HTTP请求格式:1.首行:【放法】+【url】+【版本号】2.header:若干行的键值对,每一行是一个键值对,键值对的键和值之间使用“:”来分割。header部分一个有几个键值对,这个是不能直接确定的,而是通过header最后的有一个空行作为header的接受标记3.空行:只包含一个 \n 作为header的结束标记4.body:数据格式取决于header中的content_T...原创 2018-08-11 22:14:53 · 389 阅读 · 0 评论 -
OSI七层模型
OSI(Open System interconnection,开放式系统互连),七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义,一个规范,它把网络从逻辑上分成了7层。 OSI七层模型的最大优点是将服务,接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整,通过七层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。应用层:主要负责对软件提供接口以使程序能使用网络...原创 2018-08-06 11:50:21 · 322 阅读 · 0 评论 -
TCP/IP五层模型
TCP/IP是一组协议的代名词,它包括许多协议,组成了TCP/IP协议簇。它是把OSI七层模型简化成了五层模型。每一层都呼叫它的下一层所提供的网络来完成自己的需求。应用层:负责应用程序间的沟通。如:简单电子邮件传输(SMTP),文件传输控制协议(FTP),网络远程访问协议(Telnet)等。传输层:负责两台主机之间的数据传输,如传输控制协议(TCP),能够保证数据可靠的从源主机发送到目标主...原创 2018-08-06 12:11:58 · 5700 阅读 · 0 评论 -
杂谈网络相关操作系统指令(netstat,ping等)
netstatpingttlnetstat(选项) 该指令用来打印Linux中网络系统的状态信息: -a或–all:显示所有连线中的Socket; -A<网络类型>或–<网络类型>:列出该网络类型连线中的相关地址; -c或–continuous:持续列出网络状态; -C或–cache:显示路由器配置的快取信息; -e或–exten...原创 2018-08-06 12:41:31 · 273 阅读 · 0 评论 -
基于TCP协议的回显服务器
基于TCP协议的回显服务器,简单的只有一个连接客户端。服务器流程: 1.创建文件描述符sock,并初始化 sockaddr_in ip地址和端口号 2.bind() 绑定文件描述符 3.accept() 阻塞等待客户端连接,返回新的文件描述符 newsock 4.循环读写客户端请求和响应 server.c#include<stdio.h>#includ...原创 2018-08-10 15:29:35 · 1045 阅读 · 0 评论 -
网络编程简单基础知识
一,IP协议:它在源地址和目的地址之间,传送一种称为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同的网络对包大小的要求。(源地址IP:发送方IP 目的地址IP :对方,接受方地址)现在有两种版本:IPV4,IPV6 IPV4:4个字节,32位整数 IPV6:8个字节,64位整数 由于基于IPV4的应用很多,IPV4还是目前的主流。、、、、、、、、、、、、、、、、、、、...原创 2018-08-06 15:18:45 · 416 阅读 · 0 评论 -
Socket——API
socket常见API:// 创建 socket ⽂文件描述符 (TCP/UDP, 客户端 + 服务器)int socket(int domain, int type, int protocol);// 绑定端⼝口号 (TCP/UDP, 服务器)int bind(int socket, const struct sockaddr *address,socklen_t address...原创 2018-08-06 16:03:00 · 561 阅读 · 0 评论 -
基于TCP协议服务器(线程/多进程)
基于TCP协议的服务器,线程,多进程版本。 为了解决服务器可以同时和多个客户端数据交互。代码如下: server.c#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;stdlib.h&amp;gt;#include&amp;lt;sys/socket.h&amp;gt;#include&amp;lt;netinet/in.h&原创 2018-08-11 14:29:03 · 377 阅读 · 0 评论 -
简单的UDP实现
根据UDP协议的特性,我们实现一个简单的回显服务器。UDP协议: 传输层协议 无连接 不可靠 面向数据报服务器代码:#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;#include&lt;string.h&gt;#include&lt;sys/socket.h&gt;#include&lt原创 2018-08-07 12:47:12 · 2723 阅读 · 0 评论 -
ARP协议
ARP协议 ARP协议是是一个介于数据链路层和网络层之间的协议。 它工作在网络层。ARP协议建立了主机IP地址和MAC地址的映射关系 在网络通信时,源主机的应用程序应该知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址。 数据包肯定先被网卡接收到再去处理上层协议的,如果接受到的数据包的硬件地址与本机不符,则直接丢弃。ARP协议的工作流程 如下图是ARP的工作流程: ...原创 2018-08-20 14:21:00 · 273 阅读 · 0 评论