TCP/IP
文章平均质量分 67
优秀的邓宗磊
这是一个优秀的人呢
展开
-
TCP/IP,TCPsocket,tcp协议的特点,tcp报文段最长字节数,tcp头内容,确认号和超时时限的设定细节,tcp协议是GBN和SR的混合体,
TCP/IP,TCPsocket,tcp协议的特点,tcp报文段最长字节数,tcp头内容,确认号和超时时限的设定细节,tcp协议是GBN和SR的混合体,一、TCPsocket1、TCP是面向连接的,它的socket其实是一个数据模型,拥有本IP,目标IP,本端口,目标端口的四元组,还有连接状态信息,并使用一个整数与其对应,这个整数就是文件描述符。2、这种数据模型封装了一个tcp连接的会话关系,体现在代码上就是socket文件描述符。3、一个TCPsocket就是一个TCP会话关系。4、使用tcp通原创 2022-05-04 15:21:27 · 2024 阅读 · 0 评论 -
TCP/IP,Linux多路IO模型epoll,select和poll的升级版,有更多的API,消耗更多句柄换来监听的清晰度,select,poll,epoll比较
TCP/IP,Linux多路IO模型epoll,select和poll的升级版,有更多的API,消耗更多句柄换来监听的清晰度,select,poll,epoll比较O、在服务端拥有较多的连接套接字的情况下,只想监听部分套接字,需要用到epoll,1、和select和poll相比,epoll可以在发生了事件后直接返回发生了事件的描述符,而不用一个个判断。2、epoll是目前非常常见的多路io转接模型,效率上大于等于select,在多连接和多监听的情况下,二者效率差不多。3、epoll拥有比select原创 2022-05-03 22:03:45 · 318 阅读 · 0 评论 -
TCP/IP,Linux多路IO模型poll,select升级版的poll模型,代码示例
TCP/IP,Linux多路IO模型poll与代码示例O、select本身使用上有些许不方便的地方,比如需要将所有描述符与select得到的fd_set遍历比较,比较麻烦,poll模型是select模型的升级版,使用起来更加方便一些。一、poll函数以及参数函数声明: #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout);结构体声明: struct pollfd {原创 2022-05-03 21:50:11 · 596 阅读 · 0 评论 -
TCP/IP,Linux多路IO模型select,select的作用,用法,限制,监听上限的修改方法,代码示例
TCP/IP,Linux多路IO模型selectO、单个服务器连接多个客户端1、服务器主机一般无法避免要与大量客户机进行连接并通信,2、不管使用多进程还是多线程,庞大的连接量都会迅速将服务器的进程或线程资源消耗光,3、Linux系统内核提供了多路IO模型select,poll,epoll进行单进程多连接的维护,Windows也有类似的模型方便在单进程中维护多个连接。4、这里的“模型”听起来和编程似乎脱节了,只要知道这就是函数就可以,例如select函数,poll函数,epoll函数,就和编码联系上原创 2022-05-03 21:20:26 · 1700 阅读 · 0 评论 -
TCP/IP,可靠数据传输rdt性能优化,流水线协议,滑动窗口,回退N步BGN,选择重传SR,对停等确认过程的优化,正常传输和异常传输时协议的传输处理
TCP/IP,可靠数据传输rdt性能优化,流水线协议,滑动窗口,回退N步BGN,选择重传SR,对停等确认过程的优化,正常传输和异常传输时协议的传输处理O、可靠数据传输rdt(reliable data transfer)通过包排序,停等确认,超时重传3个机制实现了可靠的数据传输,其中停等机制保证了数据正确的同时极大的限制了传输的效率,故需要优化。一、停等协议对性能的影响:当通信信道非常长,一个包和对应的肯定确认在发送方和接收方之间传输需要比较长的时间时,不停的一个个包来回发送和确认会浪费信道的传输资源原创 2022-05-03 17:11:18 · 1320 阅读 · 0 评论 -
TCP/IP,可靠数据传输rdt(reliable data transfer)的原理,包排序,停等确认,超时重传,确保传输过程中包的不出错和不丢失
TCP/IP,可靠数据传输rdt(reliable data transfer)的原理,包排序,停等确认,超时重传,确保传输过程中包的不出错和不丢失O、信道的不可靠特点决定了可靠数据传输的复杂性,ip层提供的服务并不是稳定可靠的(unreliable data transfer),数据在传输时可能会发生数据出错,丢失的问题,tcp通过多个机制,以传输性能上的部分损耗,保证了数据不会出错丢失等问题,Rdt的数据交付过程经过上层调用后,发送方和接收方进入了数据传输的状态,此时讨论在上层调用后和下一次调用原创 2022-05-03 16:59:22 · 1391 阅读 · 0 评论 -
TCP/IP,传输层提供和依赖的服务,传输层通过端口号进行多路复用和多路分解
TCP/IP,传输层提供和依赖的服务,通过端口号进行多路复用和多路分解一、传输层服务:传输和区分应用层的报文1、传输层提供的服务是应用进程之间的以报文为单位的逻辑传输。2、发送方:将应用层的报文分成报文段,传递给网络层。3、接收方:将报文段重组成报文,并将报文传递给应用层的指定进程。二、传输层协议:tcp,udp1、传输层依赖网络层提供的报文传输服务,但是网络层对报文的传输不保证可靠。2、传输层基于网络层提供了可靠传输的协议tcp,保证了发送方发送的内容接收方可以完完全全的接收到。3、传输层原创 2022-05-03 16:47:18 · 1810 阅读 · 0 评论 -
TCP/IP,多进程服务器,可多连接,通过fork创建子进程并由子进程维护与客户端的连接,通过信号量回收子进程
TCP/IP,多进程服务器,可多连接,通过fork创建子进程并由子进程维护与客户端的连接,通过信号量回收子进程一、思路1、服务端创建并维护用于监听端口的套接字2、当监听套接字accept到客户端的连接后,使用fork创建子进程3、通过判断fork的返回值分辨父进程和子进程,4、父进程关闭与客户端通信的套接字,子进程关闭监听的套接字,原因见:Linux下fork复制出来的进程数据中文件描述符的共享状态,.data数据拷贝的设定,无用文件描述符需要关闭,仅保留当前进程需要使用的文件描述符5、客户端原创 2022-04-12 20:44:29 · 2318 阅读 · 0 评论 -
TCP/IP,客户端简单实例,连接本机服务端实例,循环发送字段并接收服务端反馈
TCP/IP,客户端简单实例,连接本机服务端实例,循环发送字段并接收服务端反馈一、客户端设定1、连接本机的服务端,ip为127.0.0.1,端口号是9527,2、与服务端建立连接后循环发送字段,发送完毕后关闭连接3、连接协议与服务端对应,为AF_INET,使用tcp传输二、客户端连接流程1、创建客户端用于连接服务端的套接字int cfd = 0;cfd = socket(AF_INET,SOCK_STREAM,0);2、设定服务端的地址并由客户端像服务端发起连接#define SERV原创 2022-04-12 19:36:37 · 3383 阅读 · 0 评论 -
TCP/IP,单进程服务器与客户端连接通信,ipv4,TCP传输,无复用简单实例,nc模拟客户端连接服务器
TCP/IP,单进程服务器与客户端连接通信,ipv4,TCP传输,无复用简单实例一、实例设定1、服务器与客户端均是本机,服务器绑定的ip可以是宏INADDR_ANY,这个宏表示可以和本机的所有网卡绑定,客户端连接的ip是127.0.0.1,这个ip就代表本机。2、服务端可以将客户端发送的字符串使用toupper函数小写转大写,然后打印在屏幕上。3、服务器为单进程,单次连接,仅一次连接非复用案例。4、此实例用于梳理连接的思路...原创 2022-04-12 19:06:56 · 3635 阅读 · 1 评论 -
TCP/IP,Linux下多进程编程中,结合信号量SIGCHLD与waitpid实时回收运行结束的子进程
TCP/IP,Linux下多进程编程中,结合信号量SIGCHLD与waitpid实时回收运行结束的子进程一、思路1、操作系统会在某个子进程结束运行后,向他的父进程发送一个SIGCHID的信号量,2、父进程中可以为此绑定一个处理函数捕获此信号量,然后将回收子进程的流程放置于处理函数中,达到子进程运行结束便被父进程回收的目的。二、代码三、运行效果在关闭了客户端后,服务端的子进程及时被回收,没有产生僵尸子进程。...原创 2022-04-09 20:16:50 · 1221 阅读 · 0 评论 -
TCP/IP,父进程fork产生的子进程变成僵尸进程,僵尸进程产生原因,查看方法,关闭父进程回收僵尸子进程,代码中回收子进程函数wait,waitpid
TCP/IP,父进程fork产生的子进程变成僵尸进程,就是进程产生原因,查看方法,关闭父进程回收僵尸子进程,代码中回收子进程函数wait,waitpidO、父进程创建子进程后,子进程运行结束后退出,但子进程的进程资源并不会被操作系统释放,而是操作系统将子进程置为僵尸进程状态,等待父进程结束或主动回收。一、僵尸进程产生原因:1、子进程return。2、子进程exit。3、父进程没return或exit,父进程没有主动请求获取子进程的返回值。二、查看僵尸进程的方法:ps au看运行状态是Z+的进原创 2022-04-09 20:09:41 · 1204 阅读 · 0 评论 -
TCP/IP,Linux下fork复制出来的进程数据中文件描述符的共享状态,.data数据拷贝的设定,无用文件描述符需要关闭,仅保留当前进程需要使用的文件描述符
TCP/IP,Linux下fork复制出来的进程数据中文件描述符的共享状态,无用文件描述符需要关闭,仅保留当前进程需要使用的文件描述符一、Linux中,父进程fork复制出来子进程中拥有和父进程相同的文件描述符,对应的的文件描述符会共同指向操作系统中的同一个文件,需要各自进行关闭处理。二、场景:服务端采用多进程通信,父进程使用fork创建出子进程时,子进程会复制父进程的所有代码内容,包括了监听和用来建立连接的文件描述符,或者称为socket套接字,文件句柄啥的,都一个意思。三、父子进程中的数据.da原创 2022-04-09 19:56:08 · 1006 阅读 · 0 评论 -
TCP/IP,Linux下多进程编程,进程复制函数fork,双返回值函数,通过父进程复制一份代码相同的子进程,父子进程执行顺序由调度算法决定,代码中获取进程执行用户的函数,数据共享状态
TCP/IP,Linux下多进程编程,进程复制函数fork,双返回值函数,通过父进程复制一份代码相同的子进程,父子进程执行顺序由调度算法决定,代码中获取进程执行用户的函数,数据共享状态一、Linux多进程编程:1、Linux多进程编程中,一个进程产生另一个进程,需要使用fork函数,fork函数可以在代码中复制一个子进程,2、fork()以后的代码被父子进程执行,fork()以前的代码只被父进程执行,3、使用man fork查看fork的头文件以及声明。二、fork双返回值使用方法:1、返回值有原创 2022-04-09 19:40:42 · 824 阅读 · 0 评论 -
TCP/IP,Linux中使用信号量控制运行中的进程,使用signal函数绑定信号量和处理函数,替换信号量默认功能,信号量会打断sleep的休眠状态
TCP/IP,Linux中使用信号量控制运行中的进程,绑定信号量和处理函数,信号量会打断sleep的休眠状态一、Linux中使用信号量对进程的调控:1、信号量是一个int值,由操作系统在特定情况下发送给进程,进程收到信号量后会做出响应,例如程序员在Linux中的进程运行时输入Ctrl+c,操作系统就会向该进程发送一个SIGINT信号量,该进程捕获到该信号量,会执行默认的中断退出的功能。2、进程在捕获到信号量后自定义处理函数,可以使用signal函数绑定信号量和处理函数,使用signal将可能收到的型号原创 2022-04-09 19:17:50 · 1026 阅读 · 0 评论 -
TCP/IP,网络编程中的任何函数在调用时都需要检查返回值的简化做法,使用nc命令模拟客户端,向STDOUT_FILENO文件写入信息相当于打印到屏幕,vim中使用shift+k查看函数文档
TCP/IP,网络编程中的任何函数在调用时都需要检查返回值的简化做法,使用nc命令模拟客户端,向STDOUT_FILENO文件写入信息相当于打印到屏幕,vim中使用shift+k查看函数文档一、socket编程中的每一个函数在调用过后,为了保持代码健壮性,都需要在后面加上if判断执行结果,导致代码打乱逻辑,可以封装原有函数,将判断过程封装起来,调用封装以后的函数,使代码看上去条理清晰。代码案例:int Bind(int sockfd, const struct sockaddr *addr, sock原创 2022-04-03 20:12:52 · 1836 阅读 · 0 评论 -
TCP/IP,一个通信过程存在三个套接字对象,服务端与客户端分别提供的函数与功能,socket,accept,listen,connect,bind
TCP/IP,一个通信过程存在三个套接字对象,服务端与客户端分别提供的函数与功能,socket,accept,listen,connect,bind一、在服务器和客户端的通信过程中,建立连接需要一对套接字,除了用来交换信息的套接字,服务器这一段还需要使用一个套接字用于监听,所以在通信过程中有3个套接字,1对+1个。二、服务端的函数:1、listen()函数并非是用于监听,而是用于设置监听上线:分析:监听过程中无消息过来时会阻塞,但listen()没有阻塞运行。listen(fd, 20):句柄fd原创 2022-04-03 20:02:42 · 2135 阅读 · 0 评论 -
TCP/IP,一个套接字维护两个缓冲区,TCP三次握手四次挥手,半关闭,对应应用层函数,接收方缓存区的值影响发送方滑动窗口,传输字节的序号是个unsigned int
TCP/IP,一个套接字维护两个缓冲区,TCP三次握手四次挥手,半连接和半关闭,对应应用层函数,接收方缓存区的值影响发送方滑动窗口一、一个套接字的文件描述符维护着发送端缓冲区和接收端缓冲区共像个缓冲区。二、建立连接三次握手:内核层client-》server:SYN,携带序号,数据字节数,缓冲区值等server-》client:SYN,携带SYN请求标志位,携带序号,确认序号,数据字节数,缓冲区值等client-》server:ACK,应答服务器连接请求,携带确认序号等用户层面看:accept和原创 2022-04-03 19:51:39 · 854 阅读 · 0 评论 -
TCP/IP,网络字节序与本地转换,Linux提供的转换函数htonl,htons等,sock_addr的数据结构与内容
TCP/IP,网络字节序与本地转换,Linux提供的转换函数htonl,htons等,sock_addr的数据结构与内容一、网络字节序存储方式:小端存储:高位存放高地址,0x12345678的小段存储是:12 34 56 78大端存储:高位存放低地址,0x12345678的大端存储是:78 56 34 12二、网络字节流规定TCP/IP协议规定,网络中的数据流采用大端存储的方式,即低地址高字节,主机则需要结合自己的存储方式判断是否需要对数据进行网络字节序到主机字节序的转换。如果是同样为大端存储的主原创 2022-04-03 19:35:34 · 2376 阅读 · 0 评论 -
TCP/IP,IP数据包格式,udp数据包格式,tcp数据包格式,Linux下的一个套接字socket描述符维护数据两个缓冲区,网络字节序采用大端存储,c语言的库函数转换主机字节流和网络字节流
TCP/IP,IP数据包格式,udp数据包格式,tcp数据包格式,Linux下的一个套接字socket描述符维护数据两个缓冲区,网络字节序采用大端存储,c语言的库函数转换主机字节流和网络字节流一、ip数据包格式1、版本:ipv4,ipv62、首部长度:首部的大小3、TTL:time to leave4、当ip无法被送达目标ip时,为了防止数据一直停留在网络中而拥塞网络5、ttl是一个小整数,设置数据报在路由节点中的跳转上限,经过一个节点该值减1,如果ttl为0且当前ip不是目的ip,该ip段就会原创 2022-02-19 12:55:19 · 1212 阅读 · 0 评论 -
TCP/IP,以太网帧格式,ARP协议实现过程,通过ip获取mac流程,ARP攻击导致网络拥塞
TCP/IP,以太网帧格式,ARP协议实现过程,通过ip获取mac流程,ARP攻击导致网络拥塞一、以太网帧格式1、目的地址:目标电脑硬件地址,Mac地址,网卡编号,全世界唯一不会重复2、源地址:源电脑硬件地址使用ifconfig可以查看自己的Linux的Mac地址3、类型:a、0800表示该以太网帧的内容是普通ip数据报b、0806表示该以太网帧的内容是ARP请求报,用与获取下一个要跳的地址,PAD是一个填充,为了保证格式,不需要放什么有用的数据。4、帧类型后面的内容最后面的4个地址是需要原创 2022-02-19 12:33:46 · 1798 阅读 · 0 评论 -
TCP/IP,OSI模型层级和作用,TCP/IP模型,数据投放到网络中时各个层级对数据的封装,网络应用的应用部分与kernel部分,数据在路由器中的传递寻路,udp与tcp数据的寻路次数
TCP/IP,OSI模型层级和作用,TCP/IP模型,数据投放到网络中时各个层级对数据的封装,网络应用的应用部分与kernel部分,数据在路由器中的传递,udp与tcp数据的寻路次数一、OSI模型:7应用层6表示层5会话层4传输层3网络层2数据链路层1物理层二、1、物理层:定义物理设备标准,如网线接口,光纤接口,介质传输速率。主要作用是传输比特流,由0,1转换为电流强弱进行传输,到达目的地后再转换为0,1,这一层的数据叫比特2、数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及原创 2022-02-19 12:04:56 · 824 阅读 · 0 评论 -
TCP/IP,协议简介,常见的各个网络层的协议名与作用,网络应用设计模式,C/S与B/S优缺点
TCP/IP,协议简介,常见的各个网络层的协议名与作用,网络应用设计模式,C/S与B/S优缺点一、协议:端系统之间传输信息的规则,端到端之间确定好传输使用的协议,并严格按照这个协议组装和解析数据,完成端系统之间数据的交换。二、常见的协议:1、传输层:常见有udp协议和tcp协议2、应用层:常见有http协议,ftp协议3、网络层:常见有IP协议,ICMP协议,igmp协议4、网络接口层:常见有ARP协议,rarp协议三、常见协议的作用1、tcp协议:传输控制协议,面向连接,可靠的,基于字节原创 2022-02-19 11:55:54 · 3835 阅读 · 0 评论 -
TCP慢启动的弊端,传输时延带来性能下降,使用TCP分岔优化云服务等服务的性能。
TCP慢启动的弊端,使用TCP分岔优化云服务等服务的性能。TCP的传输在慢启动机制下有启动缓慢,增长快速的特点,1、以一个报文启动,以不断乘2的速度增加传输量。2、这里可以看出TCP涨的快,起点低。3、TCP建立和关闭连接经历的三次握手四次挥手也是很消耗资源和时间的。这就带来了一个现象:用户在端系统上的操作需要TCP在客户端和服务端交换文件,进程接收到用户操作并与服务端进行文件交换后对用户操作做出响应的时延会受到传输时延RTT不同的影响。1、在文件比较大时,TCP的传输保持快而稳定,感觉不到R原创 2021-11-27 16:13:43 · 2396 阅读 · 0 评论 -
TCP协议在进行传输流量控制时使用的三个窗口。
TCP协议在进行流量控制时使用的窗口。窗口的使用基于TCP传输中的字节编号和肯定应答。TCP通过发送窗口(滑动窗口)让运输的效率提升。发送方维护一个变量n和base组成了一个起点为base,终点为base+n的分组区域,发送方可以依次发送数量为n的分组到网络中,并等待来自接收方的肯定应答,当收到的肯定应答的编号等于base时,base才会相应的+1,在n不变的情况下,base增加类似窗口整体下移。n的取值则必须小于等于所有分组数量的1/2。与单分组相比,发送窗口的存在保证发送方可以以较高的效率向网络原创 2021-11-27 16:08:33 · 2716 阅读 · 0 评论