본문 바로가기

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

네트워크 공부 1 일차

반응형

 최근 웹 관련해서 이것저것 기웃기웃 거리고 있어서, HTTP를 포함한 네트워크 전반에 대해서 공부를 시작하기로 마음먹었다. 공부한 것 중 하나를 주제로 각잡고 글을 쓰는 것도 괜찮지만, 생각보다 많은 시간이 들어서 그냥 간단하게 공부한 것을 정리하는 용도로 그냥 일기처럼 쓰기로 하였다. 용어에 대한 개념을 정확하게 기술하기 보다는 어떻게 내가 이 개념을 이해하였는 가를 중점에 두고 글을 쓸려고 한다. 만약 참고할 사람이 있다면 "아 이런 식으로 이 사람은 이 개념을 대해 이해했구나" 정도만 참고하고 해당 개념을 깊게 분석한 글로 넘어갈 것을 추천한다.

  • 지금 내가 공부하고 있는 코스 : 네트워크 기초(유튜브 : 널널한 개발자 TV) : 깊은 내용을 다루기보다는 이런 개념이 있고 나는 어떻게 이 개념을 받아들었다 정도로 설명하고 있어서 개념 잡기가 좋다는 생각이 든다.(아직 1일 차지만)
  • OSI 7 Layers : 네트워크를 구성하는 7 가지 단계로 유저 단부터 하드웨어 단까지 네트워크가 어떤 단계로 구성되어 있는 지를 정의한다. 중요한 개념이나, 너무 집착할 필요는 없다고 강의자는 설명하고 있다. 간단하게만 언급하자면 Physical Layer(L1), Data Link Layer(L2)는 하드웨어 단, Network Layer(L3), Transport Layer(L4)는 커널 단, Session Layer(L5), Presentaion Layer(L6), Application Layer(L7)은 유저 단에 속해 있다. 이 정도만 알고 넘어가자. 사실  네트워크 구성 단계를 나누는 방법은 여러가지가 있다. 일례로 DoD에서 정의한 네트워크 구성 단계를 들 수 있다.
  • HTTP는 L7, TCP/IP는 각각 L4, L3에 속하여 있다. HTTP는 클라이언트와 서버 간의 통신 프로토콜을 의미한다. L7에 속한다. TCP/IP는 컴퓨터 사이의 통신 표준 및 네트워크의 라우팅 및 상호 연결에 대한 규칙을 의미한다. 중요한 것은 OSI만 파면 정작 이 개념을 응용한 결과물인 HTTP, TCP/IP에 대해서는 소훌하게 된다는 것이다.
  • Socket : TCP/IP에서 Process로 접근할 수 있는 통로를 파일의 형태로 출력하는 것이다. 프로그래밍 언어를 공부하면서 파일의 입출력 방식에 대해서 공부한 적이 있다면 Stream에 대해서 한 번쯤은 들어봤을 것이다. Stream은 Socket을 기술하는 기본적인 단위이다.
  • OSI의 각 단계는 각각 고유의 식별자를 가지고 있다. L4에서의 대표적인 식별자인 Port, L3의 대표적인 식별자인 IP, L2 에서의 대표적인 식별자인 NIC를 예로 들 수 있다.
  • NIC : 하드웨어 네트워크 인터페이스를 구분하는 식별자이다. 쉽게 LAN 카드나 이더넷 카드를 생각하면 된다. NIC의 주소는 변경이 가능하다. 하나의 NIC에는 여러개 IP가 Binding될 수 있다.
  • IP : 호스트 식별자이다. 호스트라는 개념이 중요하다. Host는 네트워크에 연결된 컴퓨터를 의미한다. 두 가지의 의미로 정의할 수 있는 데 하나는 네트워크 그 자체를 구성하는 주체로서의 호스트, 다른 하나는 네트워크를 이용하는 이용 주체로서의 호스트를 들 수 있다. 네트워크 구성 주체로서의 호스트에는 라우터(Router)를 그 예로 들 수 있다. 라우터의 역할은 쉽게 말하자면 데이터를 옮겨주는 경로를 바꾸는 스위치이다. 라우터의 이름은 그 목적성에 따라서 이름이 바뀔 수 있는 데 대표적인 예시가 Firewall(방화벽), IPS는 보안에 목적을 둔 라워터라고 볼 수 있다.(조금 의미는 다르지만...). 우리가 쉽게 접하는 인터넷은 라우터 + DNS 라고 보면된다. 네트워크 이용 주체로서의 호스트를 단말(End Point)에 있다고 한다. 단말기라는 말이 여기서 나온 것이다. Server, Peer, Client 모두 호스트에 포함되는 개념이다.  
  • IP의 주소 체계는 IPv4, IPv6를 들 수 있다. IPv6는 인터넷을 사용하는 기기의 증가에 따라서 IPv4를 보완하기 위해 탄생한 주소 체계이다. 각각 32bit, 128bit로 구성되어 있다.
  • Port는 관점에 따라서 다르게 정의될 수 있다. Appliation 개발자 입장에서는 프로세스 식별자로 볼 수 있다. 하나의 포트는 사용시 하나의 프로세스가 온전하게 독점한다. 동시에 두 프로세스가 하나의 포트에 붙을 수 없다는 뜻이다. 포트 번호는 0 ~ 65535 번 포트까지 있으며 이 중 1024 번 포트까지는 통신 규약에 의해 정의되어 있다.
  • 네트워크에서의 데이터 단위로는 Stream(), Segment, Packet, Frame을 대표적으로 들 수 있다. Stream은 쉽게 시작은 정해져 있으나 끝이 아직 정해지지 않은 데이터의 모임정도로 생각하면 될 것 같다. 인터넷 상으로 데이터를 보낼 때는 한 번에 보낼 수 있는 길이가 정해져 있다. 이 길이에 맞게 데이터를 나눈 것이 Segment 다. 이 때 Secgment의 크기는 150 Bytes인데 이는 동시에 Packet의 크기다. Packet은 네트워크 상에서 데이터를 보내는 단위이다. 특징으로 Packeㅅ은 그 크기가 항상 일정하다는 것이다. 프레임은 Packet을 캡슐화 한 것으로, 데이터 링크 단계에서의 데이터 송수신 단위이다.  

 더 깊이 팔 수 있지만 여기까지... 1 일차에 배운 것들을 빠르게 정리하였다. 한 번에 깊게 보다는 얕지만 빠르게 빠르게 조금씩 깊이 들어가는 방식으로 공부해 나갈 예정이다.

 

반응형