전체 글
Windows OS - Kernel Object(커널 오브젝트)
Windows OS - Kernel Object(커널 오브젝트)
2022.01.02커널 오브젝트는 무엇인가? Windows는 Object의 형태로 OS내의 자원을 관리한다. Object는 메모리 블럭의 형태를 띄고있다. C/C++ 의 구조체를 생각하면 된다. https://docs.microsoft.com/en-us/windows/win32/sysinfo/object-categories Object Categories - Win32 apps The system provides three categories of objects: user, graphics device interface (GDI), and kernel. docs.microsoft.com 이중에서, 그 중요도가 높아 Windows Kernel에 의해서 관리되는 자원을 Kernel Object로 분리해두었다. Windows ..
L2 - LAN Adapter(랜카드) 의 동작
L2 - LAN Adapter(랜카드) 의 동작
2021.12.31LAN Adapter는 송신에 대해서 어떤일을 하는가? 송신하려는 데이터가 랜카드 까지 도착했다면 사실상 통신에 필요한 정보는 완성이 된 상태이다. 물론 IP Header 까지만 넣고, 랜카드에서 MAC Header를 붙이는 것 아닌가 오해할 수 있다. 랜카드가 MAC Address를 가지고, MAC Address가 L2에서 사용되는 주소니까, L2 Header도 랜카드에서 붙이는 것이 아닌가...? " 생각할수 있겠지만, 그렇지 않다. 랜카드에 도착하기 전 IP Header, MAC Header 세팅을 모두 끝낸다. Header를 붙이는 것은, OS 내지는 소프트웨어가 하는일이다. IP Header와 MAC Header는 단지 L3장비와 L2장비가 이해할수 있는 주소체계를 가지고 있는 것이다. 데이터 ..
네트워크/데이터 통신 기본 이론 - Packet Header 의 구분
네트워크/데이터 통신 기본 이론 - Packet Header 의 구분
2021.12.31아래 그림은 Ethernet 헤더부터 IP 헤더, 그리고 TCP/UDP 헤더를 통해 패킷의 응용을 어떻게 구별하는지를 그 과정을 보이고 있습니다. L2: Ethernet Header Ethernet 헤더는 Destination MAC Address(6B), Source MAC Address(6B) 그리고 Ethernet Type(2B)로 구성이 됩니다. 그리고 위 그림과 같이 Ethernet Type의 값이 1536(0x600) 보다 크면 RFC 894에서 규정한 DIX 2.0 포맷이 되구요(아래 그림 좌측과 같이). 만약 이 보다 작은 값이면 IEEE에서 정의한 SNAP 혹은 SAP 포맷이 됩니다. 현재 유선 Ethernet 망에서 다니는 대부분의 패킷은 이 DIX 2.0 이므로 일단 이 것만 아셔도 ..
L3 - ARP(Address Resolution Protocol)
L3 - ARP(Address Resolution Protocol)
2021.12.30원격과의 데이터통신에는 총 3개의 주소가 필요하다. L4 Port Number, L3 IP Address, L2 Ethernet Address(MAC Address) IP와 Port에 대해서는 서비스 제공자로부터 App 내에 코딩된 정보 혹은 웹페이지의 도메인이름이 사전에 등록이 되어있는 경우 DNS 서버의 도움을 받아 쉽게 알아 낼 수 있다. L4와 L3는 그렇다고 치고, L2 주소( Ethernet Address)는 대체 어떻게 알아내서 통신이 진행되는 것일까? 라우터와 라우터 사이에는 별도의 프로토콜이 존재하지만, 같은 라우터를 공유하는 다른 서브넷내의 머신과의 통신에는 간단하게 ARP가 이용된다. 같은 라우터를 사용하는 다른 서브넷일 경우 ARP를 이용하면 간단하게 이더넷 주소를 얻어온다. 이때,..
L4 - TCP Sliding Window
L4 - TCP Sliding Window
2021.12.29TCP 는 원격의 Ack 통지로부터 내가 보낸 데이터가 잘갔는지 확인하고, Seq 통지를 통해 보낼 데이터의 순서를 알린다. 1. Seq로 상대에게 데이터 순서를 통지하고, 2. 상대로부터 Ack를 받은뒤, 3. 이에 따라 Seq를 정하고 다시 송신. 한번보내면, 상대도 응답을 한번 보내고 그걸 받아야만 다음 차례 송신을 진행하는 이런 방식을 핑퐁 방식 이라고 한다. 핑퐁 방식은 무엇보다도 상대로부터 Ack를 받고 다시 보내기 때문에, 상대가 어디까지 받았는지, 내가 어디서부터 보내야 할지가 매우 명확하며, 방식이 매우 심플하다. 허나 , 데이터 송신 후 상대측으로부터의 Ack 통지를 기다릴때, 상대측의 응답이 늦어질 경우 상당한 손해이다. 보낼 것은 많은데, 상대측으로부터의 응답이 없다는 이유로 기다릴..