네트워크 - OSI 4 계층 (물리, 데이터링크, 네트워크, 전송)

클라이언트와 서버가 데이터를 주고 받을때, 어떤 형태로 데이터를 주고 받는가? -> OSI 7계층

OSI 7계층

물리 계층

0,1 비트

인터넷을 쓰려면 랜선을 벽에서 나오는곳에 꼽고, 컴퓨터에 꼽는다. 랜선에서는 전기가 흐르는데, 그 전기에서 전기신호를 1, 0으로 바꿔주는 아이가 랜카드. 또는 반대로 0, 1을 전기로 바꾸는 역할을 한다.

전기신호가 0, 1으로 판단되는 기준에서 어떠한 이유로 전기신호가 올바르게 전달이 안될 경우,(1인데 0으로 판단되는 그런 오류) 검증단계를 거치는 경우도 있다.

데이터링크 계층 (L2)

0과 1로 구성된 데이터가 어디로 가는가?

데이터링크 계층에서는 0과 1로 구성된 데이터를 어떠한 기준으로 나뉘어서 의미를 부여한다. 그 의미중 목적지, 출발지 등등이 있는데, 이 목적지와 출발지 데이터는 MAC 주소를 활용한다. MAC 주소는 랜카드의 ID이다. 목적지와 출발지를 MAC주소로 가져오게되어 알 수 있다.

목적지의 MAC 주소를 어떻게 알지?

누구한테 보내고 싶은데, 옆에 있는 무언가한테 MAC주소를 모르니 너가 좀 받아봐바~ 하는 식으로 그 MAC주소를 찾게된다.(목적지가 바로 옆에 있는 스위치 주소가 됨) MAC주소를 찾으면 다시 돌아온다.

그 옆에 있는 무언가는 스위치나 허브가 될 수 있다. 그리고 라우터로 넘어간다. 라우터 간으로 넘어가게 되면 다시 스위치 허브로 죽죽 물어보고.. 하는식으로 넘어가게 된다.

프로토콜 등장 -> 프로토콜이란 대화가 통하도록 정해놓은 약속

0과 1로 이루어진 데이터를 이더넷이라는 프로토콜을 통해서 의미를 부여시켜준다. 그렇게되면 0과 1로 이루어진 데이터를 해석할 수 있게 된다. 목적지, 출발지, 유형, 데이터, 트레일러로 나뉘어져 의미를 가질 수 있게 된다.

네트워크 계층 (L3, Network)

네트워크 계층은, 데이터링크 계층에서 0과 1로 구성된 데이터를 어떠한 기준으로 나뉘어져 의미를 부여하는데, 그 의미중 본질, 즉 전달하려하는 데이터만 보면 그게 네트워크 계층이다.

IP 등장

네트워크에 고유한 주소를 부여한 것이 IP. IPv4에서 IPv6로 넘어가는 과정, 왜 넘어가지 않는가 -> 사설IP 때문

공인IP, 사설IP가 있는데, 공인IP를 알아야 다른 컴퓨터와 소통이 가능하다.

사설IP는 172.16 ~ 172.31, 192.168 ~, 10.~ 으로 시작한다. IP가 얘네들인 경우에는 제대로 소통이 안됨 (아마 우리집 공유기 내의 IP인 경우가 많음)

라우터를 가지고 있고, 그 안에 스위치들이 있는데, 각 스위치들이 MAC주소들을 여러개 가지고 있는 계층구조로 이루어져있다. (하지만 이게 무조건 이런 계층구조라고 생각하면 안됨! 일반적인 구조임)

여기서 이 라우터는 네트워크를 구성한다.

네트워크는 여기저기 다 있을 것이다. (A건물, B건물….) 옆 건물의 IP의 경우는 라우팅 테이블에 저장되어있어서 알 수 있다.

네트워크 계층에서는 IP가 있다!

프레임 : 목적 MAC + 출발지 MAC + 네트워크데이터(목적 IP + 출발 IP + 전송계층데이터) + 트레일러(끝자리)

데이터링크 계층에서는 MAC주소가 뭍어있고, 네트워크 계층에서는 목적지, 출발지 IP가 붙어있다. (옆 라우터, 내 라우터 이런식) 그리고 이 데이터를 네트워크 패킷이라고 한다.

라우터(네트워크)가 공인 IP를 가지고 있고, 해당하는 영역 안에 사설 IP를 나눠서 사용할 수 있다.

ipconfig

위 커맨드를 입력하면 사설IP 아래에 공인IP가 나와있다.

정리

공인IP는 전세계 인구수보다 적기 때문에, 대표하는 네트워크 IP 하나만을 두고, 내부 네트워크는 사설IP를 사용한다. 사설IP 특징은 192.168, 172.16 ~ 172.31 범위로 가질 수 있다. 마지막 자리의 0, 1, 255는 역할이 정해져있는 경우가 많다. 보통 1이 공유기(대표하는 아이) 브로드캐스트한테 데이터를 보내면, 해당 네트워크 전체에 데이터가 보내진다.

특수 IP (loopback) 127.0.0.1 = localhost -> 내 컴퓨터

전송계층 데이터

네트워크 계층에서는 IP구분이 주된 목적이다. 이제 컴퓨터 안에서 어떤 프로그램한테 해당 데이터가 전송되어야하는지가 포인트

여기서 포트라는 개념이 나온다. 포트는 IP 뒤에 붙어있다. (ex: 15.163.24.8:80)

포트를 통해서 어떤 프로그램을 처리하는지를 알 수 있게 된다. 포트는 보통 0~1023 기준이 하나가 있고, 0~65536 기준이 하나가 있다.

0~1023 포트는 wellknown 포트라고 해서 잘 알려진 포트라고 하고, 보통 이미 다른 곳에서 사용하고 있는 경우가 대다수라 쓰지 않는 것이 좋다.

전송계층에서는 포트를 통해서 어떤 프로그램 목적지의 데이터를 처리해야하는지 (오류체크 기능도 있다.) 알 수 있다.

전송계층 데이터는 세그먼트라고 부른다. 세그먼트는 TCP헤더 + 데이터(UDP헤더 + 데이터)로 구성되어있다. TCP헤더 내부에는 3way handshake (SYN, ACK)가 대표적으로 존재한다. 세그먼트에는 이렇게 구성되어서 네트워크 계층으로 넘어가게된다. TCP는 UDP보다 확인과정이 많기때문에 (TCP헤더가 더 무겁다) 데이터 용량이 더 커서 느리다.

  • TCP : 3way handshake를 사용해서 데이터를 받았는지 확인, 연결 확인 등을 한다. 즉, 데이터가 제대로 전달이 되었다는 것이 어느정도 신뢰가 가도록 하는 것 (확인과정이 많아서 느림)
  • UDP : 받았는지 확인을 하지않고 데이터를 막 던진다. (멀티미디어 전송의 경우, 정확도가 떨어져도 큰 문제가 되지 않음 대신 빠름)