TCP digest

TCP在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data
Link层,在第二层上的数据,我们叫Frame,在第三层上的数据叫Packet,第四层的数据叫Segment。
  首先,我们需要知道,我们程序的数据首先会打到TCP的Segment中,然后TCP的Segment会打到IP的Packet中,然后再打到以太网Ethernet的Frame中,传到对端后,各个层解析自己的协议,然后把数据交给更高层的协议处理。

你需要注意这么几点:

  • TCP的包是没有IP地址的,那是IP层上的事。但是有源端口和目标端口。

  • 一个TCP连接需要四个元组来表示是同一个连接(src_ip,
    src_port, dst_ip, dst_port)准确说是五元组,还有一个是协议。但因为这里只是说TCP协议,所以,这里我只说四元组。

  • 注意上图中的四个非常重要的东西:
    • Sequence
      Number
      是包的序号,用来解决网络包乱序(reordering)问题。

    • Acknowledgement
      Number
      就是ACK——用于确认收到,用来解决不丢包的问题

    • Window又叫Advertised-Window,也就是著名的滑动窗口(Sliding
      Window),用于解决流控的

    • TCP
      Flag
       ,也就是包的类型,主要是用于操控TCP的状态机的

http://kb.cnblogs.com/page/209100/

时间: 2024-08-02 23:02:02

TCP digest的相关文章

实验五 TCP传输及加密

一.实验内容: 1.运行教材上TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代码,一人加密后通过TCP发送: 注:加密使用AES或者DES/AES或者DES加密密钥key并发送,使用服务器的公钥加密/公钥算法使用RSA或DH/检验发送信息的完整性使用MD5或者SHA3: 4.用Git进行版本控制. 5.完成Blog 二.实验步骤: 服务器代码: // file name:ComputeTCPServer.java import

Java实验五报告——TCP传输及加解密

一.实验内容 1.运行教材上TCP代码,结对进行,一人服务器,一人客户端: 2.利用加解密代码包,编译运行代码,一人加密,一人解密: 3.集成代码,一人加密后通过TCP发送: 注:加密使用AES或者DES/AES或者DES加密密钥key并发送,使用服务器的公钥加密/公钥算法使用RSA或DH/检验发送信息的完整性使用MD5或者SHA3: 4.完成Blog. 二.实验步骤 1.综述 本次实验的实验内容较少,但是准备工作非常多:在此次实验中,本小组仍然采用“编学习,边实验”的方法,虽然过程较曲折,但最

TCP/IP, WebSocket 和 MQTT

按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP和MQTT是应用层的协议.在这三者之间, TCP是HTTP和MQTT底层的协议.大家对HTTP很熟悉,这里简要介绍下MQTT.MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分.该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器的通信协议. HTTP的不足 HTTP协议经过多年的使用,发现了

java 通过TCP\UDP 协议实现多人聊天,点对点,文件传送-----分服务器端和客户端

java 通过TCP\UDP 协议实现多人聊天,点对点,文件传送-----分服务器端和客户端 启动界面如下图: 首先启动服务器: 客户端登陆,登陆成功后为: 默认发送是全部用户,是多人发送. 当在边列表里面选择了用户后,可以与此用户建立点对点链接进行聊天,可以发送文件. 用户在线离线状态会实时更新,如果离线,则存为离线消息.当下次上线的时候,会接受到离线消息 从一个用户接受文件的同时,还可以接受从服务器发过来的文件 接受文件完成后,显示记录,并显示保存目录 消息发送演示 服务器端代码: 1 im

[心平气和读经典]The TCP/IP Guide(005)

The TCP/IP Guide[Page 47, 48, 49] I created The TCP/IP Guide to provide you with an unparalleled breadth and depth of infor mation on TCP/IP. This meant including a lot of content in this Guide -- it has over 600 sections, subsections and individual

TCP拥塞控制机制

我们知道TCP是拥有拥塞控制机制的,而UDP是没有的,为什么需要拥塞控制机制呢,就是防止丢包过多导致传输效率低下.网络中传输的包太多,路由器的缓存又不够,每一个发送端都以自己想要的发送速率发送包,自然会导致网络拥塞.所以我TCP就包括了拥塞控制机制. 有几种拥塞控制方法? 2种 1.端到端拥塞控制.网络层没有显示的告知传输层此时网络出现拥塞了,传输层通过报文段的丢失(超时或3次冗余确认得知)认为网络出现拥塞了,TCP会缩减其拥塞窗口,减小发送速率. 2.网络辅助的拥塞控制.网络层显示的告知发送端

winform学习日志(二十三)---------------socket(TCP)发送文件

一:由于在上一个随笔的基础之上拓展的所以直接上代码,客户端: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Net.Sockets; using Sys

TCP四次挥手(断开连接)(未完待续)

正常情况下,调用close(),其中产生的一个效果就是发送FIN. 断开为什么需要四次握手: TCP协议是一种面向连接的.可靠的.基于字节流的运输层通信协议.TCP是全双工模式,这就意味着,当主机1发出FIN报文段时,只是表示主机1已经没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕了:但是,这个时候主机1还是可以接受来自主机2的数据:当主机2返回ACK报文段时,表示它已经知道主机1没有数据发送了,但是主机2还是可以发送数据到主机1的:当主机2也发送了FIN报文段时,这个时候就表示主

JAVA网络编程TCP通信

Socket简介: Socket称为"套接字",描述IP地址和端口.在Internet上的主机一般运行多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定在一个端口上,不同的端口对应于不同的服务.Socket和ServerSocket类位于java.net包中.ServerSocket用于服务端,Socket是建立网络连接时使用的.连接成功时,应用程序两端都会产生一个Socket实例,通过操作这个实例完成所需会话. Socket常用方法: -int getLocalP