본문 바로가기

뭐라도 공부해보자!!( 이론 )/네트워크(공부한 것 정리하기)

네트워크 공부 5 일차

반응형

 네트워크 공부 5 일차, 뜨문 뜨문 공부해서 그런지 솔직히 오늘 공부한 내용이 잘 이해가 가지는 않았다. 책이 진짜로 한 권은 필요할 것 같다. 내용들이 점차 구체화되고 있는데, 대략적으로만 이해하다 보니 기초가 부실해 학습이 지연되는 듯한 느낌이 든다. 동영상으로는 공부하는 건 확실히 한계가 있는 것 같다. 어쨌든 오늘 배운 내용을 간단하게 정리하고자 한다.

  • TCP 연결 : TCP에서의 연결은 무엇인가? 우선 앞서서 연결의 근거는 무엇인가? 예를 들어 A가 B를 부른다고 하였을 때 우연히 B를 부르는 소리를 들은 C가 대답하였다면 제대로 된 통신이라 보기 어렵다. TCP는 서로 제대로 연결되었는 지를 확인하기 위해 3-Way-Handshake 기법을 사용한다. 클라이언트 측에서 순서 번호를 포함한 SYN 세그먼트를 서버 측으로 송신한다. 서버는 클라이언트가 송신한 데이터 그램에서 TCP SYN 세그먼트를 추출한 후 TCP 버퍼와 변수를 할당한 후 연결 승인 세그먼트를 송신한다. 이 때 ACK 신호 뿐만 아니라 서버측 동기 정보를 보내기도 한다. SYN에 대한 정보는 상당히 중요한 데, SYN을 공유 함으로써 정책의 교환, 최대 송수신 양의 교환 등이 이루어진다. 클라이언트가 서버로 부터 승인 신호를 포함한 세그먼트를 받으면 다시 서버로 확인 응답 신호를 포함한 세그먼트를 서버로 보내게 된다. 그 이후 부터는 정상적으로 데이터를 송수신하게 된다.
  • 네트워크의 상위 계층들은 그 밑의 기저 계층들이 제대로 연결되어 있어야지 제대로 동작을 할 수 있다. 그렇다면 만약 기저 단계의 통신에 문제가 생긴 경우에는 어떤 일이 발생하는 가? 예를 들어 거대한 용량의 파일을 다운받는 중 LAN 선을 실수로 뽑은 경험은 한 번씩 있을 것이다. LAN이 뽑혔음에도 빠르게 연결을 하면 원래 있던 지점부터 정상적으로 파일이 다운받아 진다는 것 역시 경험한 적이 있을 것이다. 전에 한 번 TCP/IP 계층을 포함하여 상위 계층들이 논리적으로 구성되어 있다는 것을 언급한 적이 있다. 설사 Net 단의 물리적인 충격이 있더라도 논리적인 네트워크의 흐름이 반드시 막히는 것은 아니다. 충격이 발생하였을 때 논리적인 연결의 생존기간을 결정짓는 것은 네트워크를 다루는 프로그래머에게 중요하다. 예를 들어 게임 복제 아이템 버그 같은 경우 임의로 버린 아이템을 다시 먹는 과정에서 물리적인 네트워크가 끊겼으나 논리적인 네트워크가 유지되는 경우, 다른 정상적인 플레이어가 보았을 때 버려진 아이템을 아직 줍지 않은 상태로 존재함으로 이 아이템을 주울 수 있게 되고, 결국 플레이어가 다시 정상적으로 접속하였을 때 두 플레이어가 모두 아이템을 소유하게 되는 버그를 일으킬 수 있게 된다. 이러한 데이터 충돌을 해결하기 위해서 물리적인 충격에 따른 상위 네트워크 연결의 생존 기간을 결정짓는 것은 중요하다.
  • 유니캐스트(Unicast), 브로드캐스트(Broadcast), 멀티캐스트(Multicast) : 모두 L2 단계에서 L2 스위치에 의해 발생한다. 3 개의 차이점은 전달되는 대상에 차이가 있다. 유니 캐스트는 송신 측이 원하는 하나의 호스트에게, 브로드 캐스트는 네트워크에 연결된 모든 호스트에게, 멀티캐스트는 하나 이상의 지정한 수신자들에게 데이터를 전송하는 방식이다. 
  • 인터넷은 라우터와 DNS의 조합으로 이루어진다. 라우터가 클라이언트가 호출한 서버의 도메인 네임을 Cache DNS가 받아서 만약 자신이 그 서버의 수소를 가지고 있으면 그 주소로 연결해 주고 아니면 Root DNS라고 특정 주소를 가진 다른 도메인 서버의 주소를 가르쳐주어 그 DNS에서 서버로 연결해준다. 

 IP 주소를 가지고 MAC 주소를 찾아내는 것도 배우기는 했는데, 솔직히 뭔가를 쓸 정도로 이해가 되지는 않았다. 진짜 책을 한 번 볼 필요가 있을 것 같다.

반응형