
컴퓨터 사이언스의 4대 꽃 중, 큰 한축을 담당하는 CN입니다. OS와 Computer Architecture은 컴퓨터 1대안에서의 이야기라면, 이제 Computer Network는 컴퓨터 - 컴퓨터 간의 연결을 만들어서 서로 잘 통신하는 이야기입니다. 짧은 인터넷 역사 개인적으로, 각 과목의 역사는 알아두면 좋다고 생각은 하지만, 큰 관심사는 아닐 수...

본격적인 컴퓨터 네트워크에 대한 이야기를 시작해보려고 합니다. 이번 챕터는 2개로 나눌지, 고봉밥으로 1개로 할지 고민이 되지만 글을 써보다가 너무 넘치면 ARP는 따로 다루는걸로 하겠습니다. L3의 역할과 책임 자신의 영역이 아닌 다른 외부까지도 전송을 할 수 있게 보장하는 것이 L3입니다. LAN과 다른 LAN간의 통신을 담당하는 계층이고, 핵심적인...

전송을 담당하고, 연결의 개념이 생긴 L4입니다. 네트워크 프로그래밍을 하게되면, Socket API를 이용하게 됩니다. Socket API가 L7과 L4간의 통신을 담당하는 API라고 생각하면 좀 와닿을까요? 사실, L4는 OS에게 꽤 많이 의존하는 계층이기도 합니다. 하지만, Socket을 활용하는 단계에서 TCP에 대한 이해도가 없으면 에러처리를 못...


이번 글은 TCP가 데이터를 교환하는 과정에 대해서 집중적으로 보겠습니다. 고전적인 형태 (티키타카/핑퐁) 고전적인 동작을 보는 이유는 큰 흐름을 잡기 위해서 입니다. 데이터를 주고, ACK를 받고 ACK가 오지 않으면 송신자 측에서 재전송 ACK를 확인할 때 까지 송신자는 추가적으로 보내지 않음. 현재의 TCP는 데이터 한 개를 보내고,...

소켓 프로그래밍은 사용법을 위주로 다루게 될 것 같습니다. 이때까지는 이론적인 이야기가 주를 이뤘지만, 소켓 프로그래밍에서는 이론적인 이야기는 많지 않을것 같습니다. (단,소켓 모델이랑 비동기 IO는 많겠네요.) Windows를 사용하기 때문에, Winsock을 기준으로 글을 쓰도록 하겠습니다. MSDN 공식 문서 소켓 API 소켓은 L4와 L7사이...

Blocking과 NonBlocking 소켓은 Blocking모드와 NonBlocking모드 2가지 모드를 지원합니다. 기본은 Blocking모드 입니다. Blocking 함수가 일을 완료할 때 까지 기다리는 것을 의미합니다. 코드의 흐름이 멈추게 됩니다. 1:1 통신이거나, 서버/클라에서 네트워크적인 행동외에 할 것이 없다면 Blocking이어도 상관...