When IP Duplication is made?

I developed TCPIP stack concerned program … during many years.  and I implemented IP Duplication Checking Logic. Just Checked IP identification is same or not when 2 tuple( source IP, Destination IP)  is *same. But… I didn’t think about it in detail. “When IP Duplication is invoked?”

* IP Identification Field. – It is kinds of Unique-Sequence number on Same Source-Destination IP.

First. I can’t find any clues  about  “IP Duplication case” in IP Header .and I could find TCP Duplication easily but. Not easy to find “IP Duplication case”.

but. Finally

https://tools.ietf.org/html/rfc6864#section-3.1

you can find this …

Other uses have been envisioned for the IPv4 ID field.  The field has
   been proposed as a way to detect and remove duplicate datagrams,
   e.g., at congested routers (noted in Section 3.2.1.5 of [RFC1122]) or
   in network accelerators.  It has similarly been proposed for use at
   end hosts to reduce the impact of duplication on higher-layer
   protocols (e.g., additional processing in TCP or the need for
   application-layer duplicate suppression in UDP).  This is discussed
   further in Section 5.1.

please check these words.. ‘congested router’ , ‘network accelerators’..

Could you guess  ‘congested router’ , ‘network accelerators’. how it works? I will avoid to mention about details about this device. but .. I assume they have buffer for control packets.

“Having Buffer” means it can make copied packet for more faster.. for more reliable .do you make sense ? … Yes. these kind of network device can send same packet again and again if They found have some problem of sending packet… But sent packet could reach destination even though that packet are considered as wrong packet.. because.. Receiver (deliver) cant know this packet is wrong or not…just will process it.

So. on TCPIP Stack Implementation. IP Duplication Checking is MUST.

That’s all… My Guess can be wrong in details.  but I convince that It almost right.  Sorry .. but My Recommendation is that You must think about it with your story if you hope to understand it.. and You will get the insight.

* IP identification  field on (Source/Destination IP is same ) can also same when IP packet is fragmented ( by Network Device which is located in Network Path ). It will also be written in the future.

Why TCP is reliable? ( first. theory side)

Many people say ” TCP is more reliable than UDP”. almost know it. but. I think many people don’t  know the why in details.

before starting. please keep this concept in your mind. “Packets are sent and received on the computer network.. this means all data is packaged  by packet on the network ”

now. let’s start it for understand about it..

Reliable mean “arrange the sequence order ” on this issue. Please think about it “what kinds of thing is need for it?? ”

  1. each must know when the start is or when the end is of communications.
  2. the value of sequence.
  3. the storage for rearrange the received data which is not processed.

that’s all, and please check the below TCP header. could you figure out what field is for TCP Reliability?

tcp header에 대한 이미지 검색결과

and let’s see the below that matched fields for.. the reliable conditions those described before.

1. each must know when the start is or when the end is of communications.

TCP Connection Procedure (3-hand shaking ) with TCP Flags ( SYN, FIN, RST )

2. the value of sequence.

TCP managed Data sequence with Sequence Number, Ack Number.

3. the storage for rearrange the received data.

TCP buffer is controlled by TCP window (  window field and Window Option about window scale value -> Window ^ Window Scale value => Total Remain buffer size now )

I hope you got the understand it… I will update this page and add more easier example for it.

Do you know ‘Preamble on datagram’ ?

before about 10 years ago. Someone ask a question “Do you know Preamble” ?

But I don’t know about it at that time. even though I thought I know almost about TCP/IP packet.

first. you can check details at wiki page

https://en.wikipedia.org/wiki/Ethernet_frame

Anyway I have some insights of it now.

first. Preamble is not on the L3/L4 Layer. It was for L1 layer . so I hadn’t seen it, though I managed Huge TCP/IP packet on Real network . I only checked packet on Ethereal..( now wireshark ).

*Preamble is for synchronization of physical packet to notify the start of Packet. and the Packet is ended by *Interpacket Gap

*Preamble  is like “Syn packet on TCP/IP”, “Hello whenever we meet “, “Delimiter”.

at the result… All Conversation is started with The Synchronization Procedure…..