사실 클라 개발자다 보니
네트워크 자체에 대한 학습을 넓게 해본 적은 없었다.
(CS 자체도 마찬가지이니)
관련해서 내용자체를 넓게 학습해보려 한다.
일단 네트워크라는 것은 통신으로 이루어집니다.
통신시에 서로 약속한 포맷에 맞추어 통신을 하게되는데,
그런 약속들을 프로토콜이라고 합니다.
웹을 주고받는 것은 HTTP
이메일을 주고받는 것은 SMTP(발신), POP3(수신)
파일을 주고받는 것은 FTP (초등학교 때 한번 써본 것 같은...)
음성 주고받는거 VOIP (보이스톡)
뒤에 모든게 Protocol의 P이다.
컴퓨터와 컴퓨터가 서로 통신하기 위해서는 단 한개의 Protocol로만 이루어질 수 없다.
1. 0101 인 숫자를 보낼텐데 이건 어떤 패턴인가요?
2. IP로 목적지를 찾으면 되나요?
3. 실행할 때 어떤 앱으로 실행해야하나요? (ppt, html etc..)
etc..
등과 같이 약속하고 규정해야할게 한두가지가 아니다.
이런 프로토콜은 또 순차적으로 이루어져야 한다.
순차적으로
보내는 컴퓨터: 데이터를 수정해서 바꾸고 보내고
받는 컴퓨터: 순차적으로 데이터를 바꿔서 데이터를 처리
이런 계층적인 구조가 크게 OSI 7과 TCP/IP 방식이 있다.
이것들을 각각 설명해보자.
OSI 7은 위의 계층 구조를 7가지로 구성한 산업 표준 참조 모델이라고 한다.
옛날 옛적에는 IBM, Apple 이런 컴퓨터마다 각각 달랐기에 통합적으로 관리되기 위해서 이런 표준이 필요했던 것 같다.
하나하나 좀 보자.
모든 계층마다 데이터를 다루는 단위라는게 존재한다.
PDU라고 하며 한 단계단계를 거쳐가며 PDU가 다음 계층을 거쳐 최하위 단계에서 Bit가 된다.
최하위 계층에 속하며 010101인 전기적인 신호를 전송하는 역할을 한다.
기계어를 전기적 신호로 바꿔주는 것.
PDU: Bit
네트워크 기기들(컴퓨터겠지) 사이의 데이터 전송을 한다.
이런 것에는 이더넷, LAN, WIFI 같은 것들이 있다.
PDU: Frame
데이터가 가는 경로를 설정해주는 역할을 한다. 당연히 예시로는 IP가 있겠고 해당 주소로 가는 최적의 경로로 전송한다.
PDU: 패킷
이 과정에서는 목적지까지 보내는 데이터들을 제어하고 에러를 관리한다.
보낸 데이터가 유효한지, 실패했는지, 순서가 맞는지등 신뢰성들을 관리한다.
TCP와 UDP 같은것들이 이곳에 해당한다.
PDU: 세그먼트
송수신 하는 사용자 사이에서 연결정보를 설정, 유지, 해제하는 역할을 한다.
뭐 로그인해서 보안적인 내용들과 단방향, 반이중, 전이중 방식등의 대화방식에 대한 것도 관리를 한다.
예시로는 SSH, TLS라는 것이 있다고 한다.
이 계층은 송수신측에서 사용하는 데이터 타입을 정한다. PNG, JPG 등등...
올바른 표현 방식으로 변환
프로토콜: JPG, HTML 등등
실제 우리가 사용하는 앱들과 연결해주는 프로토콜등이다.
메일이면 SMTP, 파일이면 FTP, 웹이면 HTTP이다.
위처럼 Bit인 데이터를 단계단계를 거쳐 원래 유저가 사용하는 목표 데이터 형태로 만들어준다.
결국 OSI 7 Layer이다.
하지만 우리는 보통 사용하는게 TCP와 IP라는 것을 이용해 통신을 만든 것.
어떻게 보면 OSI 7에서 가장 흔히 사용하는 꿀 조합을 묶어 놓은 것 정도라고 생각을 하면 좋을 것 같다.
데이터의 정확성은 TCP가
목적지까지 전송하는 일은 IP로 크게 나누어 본다.
아래의 대칭되는 방식이므로 따로 자세하게 설명하진 않는다.