模拟TCP通信协议

1.定义IP头部格式

2.定义数据校验协议

    public struct IP_Head
    {
        public char headlength ;
        public char version;
        public char tos;

        public short total_len;
        public short identifier;
        public char ttl;
        public char protocal;
        public short checknum;
        public long sourceIP;
        public long destIP;

    }

    public struct ICMP_Header
    {
        byte type;
        byte code;
        short cknum;
        short id;
        short seq;
    }
时间: 2024-10-11 07:52:30

模拟TCP通信协议的相关文章

[Java]命令行模拟TCP客户端与服务端的简单小程序遇到的问题(基础不牢!扎实和亲手实践比什么都重要!)

简单得不能再简单的需求: 简单模拟TCP客户端与服务端的一次连接和通信,客户端发出一个消息,服务端回馈一个消息 自己第一次编写的代码: Client: class TcpClient1 { public static void main(String[] args) throws Exception { Socket s=new Socket("127.0.0.1",10010); OutputStream out=s.getOutputStream(); out.write(&quo

分布式架构基石-TCP通信协议

为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样.计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用.只有把它们联合起来,电脑才会发挥出它最大的潜力.于是人们就想方设法的用电线把电脑连接到了一起. 但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息.因而他们需要定义一些共通的东西来进行交流,TCP/IP就是

网络编程学习之——TCP通信协议

TCP协议与三次握手明确两个重要的概念: 客户端:首先发送TCP请求的是客户端,客户端是一般服务的请求者. 服务器:在接收到客户端发送的请求后(确保同客户端你的通信信道建立),服务器会向客户端提供服务.服务器一般是服务的执行 者,会向客户端返回服务执行的结果. 信道建立过程: 为了实现客户端的同服务器端的通信,客户端首先发送一个"SYN"数据包.如果服务器收到"SYN"标记,它将发回一个"SYN+ACK"数据包.接着客户端为了表示接收到了这个&q

python socket 模拟tcp通讯

对于tcp server 端的创建而言, 分为如下步骤: 1,创建socket对象(socket):其中俩个参数分别为 Address Family(如AF_INET为ipv4),AF_INET6为ipv6,AF_UNIX为unix域协议簇). socket类型(如SOCK_STREAM为tcp,SOCK_DGRAM为udp) 2,绑定服务器地址(bind) : 参数为服务器地址二元组 也就是套接字 3,监听(listen): 参数为允许的连接数 4,等待请求(accpet): 建立一个连接,等

用python模拟TCP 服务器跟 TCP连接

import socket target_host = "127.0.0.1" target_port = 9999 client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) client.connect((target_host,target_port)) client.send("GET / HTTP/1.1\r\nHost:baidu.com\r\n\r\n") response = client.re

组态王MODBUS TCP数据报格式

在大家通读Modbus协议时,总是会碰到一些容易混淆的名词,从而导致对于协议的解读出现问题,在本文中,我 们对于Modbus协议中可能会给大家造成困惑的名词作相关的解释. 1.功能码:功能码在modbus协议用于表示信息帧的功能,常用的功能码有03,04,06,16等,其中03功能码的作 用是读保持寄存器内容,04功能码的作用是读输入寄存器内容(输入寄存器和保持寄存器的区别看下文),06功 能码的内容是预置单个保持寄存器,16功能码的内容则是预置多个保持寄存器. 2.输入寄存器和保持寄存器:04

TCP粘包, UDP丢包, nagle算法

一.TCP粘包 1. 什么时候考虑粘包 如果利用tcp每次发送数据,就与对方建立连接,然后双方发送完一段数据后,就关闭连接,这样就不会出现粘包问题(因为只有一种包结构,类似于http协议,UDP不会出现粘包现象).关闭连接主要要双方都发送close连接(参考tcp关闭协议).如:A需要发送一段字符串给B,那么A与B建立连接,然后发送双方都默认好的协议字符如"hello give me sth abour yourself",然后B收到报文后,就将缓冲区数据接收,然后关闭连接,这样粘包问

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

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

WCF服务使用(IIS+Http)和(Winform宿主+Tcp)两种方式进行发布

1.写在前面 刚接触WCF不久,有很多地方知其然不知其所以然.当我在[创建服务->发布服务->使用服务]这一过程出现过许多问题.如客户端找不到服务引用:客户端只在本机环境中才能访问服务,移植到其他机器上就不能访问服务(权限问题)等问题.所以写下这篇文章把我使用http和tcp这两方式部署服务所出现的问题以及解决方案记录下来,方便自己下次查看,也可以当作初学WCF的一个入门小示例吧. 2.建立一个WCF服务 首先要编写一个WCF服务,我在这里提供一个通过名字查询年龄的服务,代码如下: 服务契约: