这次总结一下TCP相关的知识. TCP主要特点 面向连接:在通信前必须建立连接(只是逻辑上存在,而不是物理连接) 只能有两个端点:即只能一对一通信(所以通常p2p是用UDP实现的) 提供可靠交付服务:保证发送的数据无差错.不丢失.不重复.顺序对(可靠,但是代价较UDP大) 全双工通信:允许双方在任何时候发送数据.TCP连接两端都有发送和接收缓存,在发送前先将数据写入缓存,TCP会自己选择合适的时候发送(接受同理,先写入缓存然后再读取) 面向字节流:流指的是流入到进程或者从进程流出的字节序列,TC…
一.计算机网络的发展历程 1.计算机网络发展 与其说计算机改变了世界,倒不如说是计算机网络改变了世界.彼时彼刻,你我都因网络而有了交集,岂非一种缘分? 计算机与网络发展大致经历如下过程:…
第0章 数据是如何进行一步步的封装的 第一章:mac帧头定义 帧头数据结构的定义: 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { char m_cDstMacAddress[6]; //目的mac地址 6字节 char m_cSrcMacAddress[6]; //源mac地址 6字节 short m_cType; //上一层协议类型,如0x0800代表上一层是IP协议,0x0806为arp 占用2字节 }…
IP数据报的校验: IP数据报只需要对数据头进行校验,步骤如下: 将接收到的数据的checksum字段设置为0 把需要校验的字段的所有位划分为16位(2字节)的字 把所有16位的字相加,如果遇到进位,则将高于16字节的进位部分的值加到最低位上,举例,0xBB5E+0xFCED=0x1 B84B,则将1放到最低位,得到结果是0xB84C 将所有字相加得到的结果应该为一个16位的数,将该数取反则可以得到检验和checksum. 上述第2步中也可以不用每次把进位加到低位,可以等所有数据计算结束再将高位…
Sendip是一个linux平台的命令行发数据包工具,目前(2018年2月)支持的协议有ipv4.ipv6.icmp.tcp.udp.bgp.rip.ntp,作者表示其他协议将会后面支持,当他有空写的时候.Sendip很强大,它支持自定义头部和数据(也就是IP层以上的整个包),没有过多的限制,所以连源IP都可以随意写,而且里面也提供了一些默认的选项,可以择需而发,非常方便.又因为它是命令行的,还支持从文件中直接读取整个packet发送,所以适合用脚本批量测试.它只是个发包工具,对于发出去的包,收…
TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP.SMTP.TCP.UDP.IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议. 1.OSI参考模型 ========================================== 物理层 作用:定义一些电器,机械,过程和规范,如集线器: PDU(协议数据单元):bit/比特 设备:集线器HUB; 注意:没有寻址的概念: ===================…
带你了解TCP/IP,UDP,Socket之间关系 https://blog.csdn.net/chaoshenzhaoxichao/article/details/79785318 主要知识点: TCP/IP参考模型 TCP\UDP\Socket的定义 tcp/ip通信示例 TCP/IP协议共分为四层:数据链路层.网络层.传输层和应用层. TCP 与 UDP 的区别 TCP 用于在传输层有必要实现可靠传输的情况.由于它是面向有链接并具备顺序控制.重发控制等机制的,所以他可以为应用提供可靠的传输…
<图解TCP/IP>6.6 UDP首部的格式 源端口号:表示发送端端口号,字段长16位.该字段是可选项,有时可能不会设置源端口号.没有源端口号的时候该字段的设置为0.可用于不需要返回的通信中. 目标端口号:表示接收端端口,字段长度16位. 包长度:该字段保存了UDP首部的长度跟数据的长度之和.单位为字节. 校验和:校验和是为了提供可靠的UDP首部和数据而设计的.…
http://rabbit.xttc.edu.cn/rabbit/htm/artical/201091145609.shtml  http://bhsc881114.github.io/2015/06/23/HTTP%E8%AF%B7%E6%B1%82%E7%9A%84TCP%E7%93%B6%E9%A2%88%E5%88%86%E6%9E%90/ TCP选项详解:http://blog.csdn.net/sunshine_okey/article/details/7613286  互连网早期的…
此篇文章的原创作者是:草根老师博客(程姚根) chengyaogen.blog.chinaunix.net 感谢原作者! 互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如:不能互连不同的主机,不能互连不同的操作系统,没有纠错功能.为了改善这种缺点,大牛弄出了TCP/IP协议.现在几乎所有的操作系统都实现了TCP/IP协议栈.   TCP/IP协议栈主要分为四层:应用层.传输层.网络层.数据链路层,每层都有相应的协议,如下图 所谓的协议就是双方进行数据传输的一种格式.整…