Habr<p>[Перевод] Пишем стек TCP/IP с нуля: Ethernet, ARP, IPv4 и ICMPv4</p><p>Написание собственного стека TCP/IP поначалу может показаться пугающей задачей. И в самом деле, за свой тридцатилетний срок жизни TCP впитал в себя множество спецификаций. Однако базовая спецификация остаётся относительно компактной1 — из важных частей в ней можно выделить парсинг заголовков TCP, машину состояний, отслеживание перегрузок и вычисление таймаута повторной передачи. Самые распространённые протоколы слоя 2 и слоя 3, Ethernet и IP, скромны по сравнению с сложностью TCP. В этой серии статей мы реализуем минимальный стек TCP/IP пользовательского пространства для Linux. Посты и код служат исключительно в образовательных целях, они позволят вам глубже изучить сетевое и системное программирование.</p><p><a href="https://habr.com/ru/articles/889618/" rel="nofollow noopener noreferrer" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/889618/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/ethernet" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ethernet</span></a> <a href="https://zhub.link/tags/tcp" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>tcp</span></a> <a href="https://zhub.link/tags/%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9_%D1%81%D1%82%D0%B5%D0%BA" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>сетевой_стек</span></a> <a href="https://zhub.link/tags/arp" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>arp</span></a> <a href="https://zhub.link/tags/ipv4" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ipv4</span></a> <a href="https://zhub.link/tags/tcpip" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>tcpip</span></a> <a href="https://zhub.link/tags/ip" class="mention hashtag" rel="nofollow noopener noreferrer" target="_blank">#<span>ip</span></a></p>