회사에서 백엔드 개발을 하면서 부족한 CS 지식 수준을 느끼게 되었고 이번 기회에 네트워크에 대해 제대로 공부해보고자 신청하여 운좋게 당첨되었고...
자바 공부도 같이 하면서 공부했기에 생각했던 것보다 시간이 더 오래걸리게 되었다...
컴퓨터 네트워크
여러 장치가 연결되어 정보를 주고받을 수 있는 통신망을 의미
인터넷
여러 네트워크를 연결한 네트워크의 네트워크
네트워크는 그래프의 형태를 띄고있음.
그래프란 노드와 간선(링크)로 이루어진 자료 구조임
노드
정보를 주고 받을 수 있는 장치
간선(링크)
정보를 주고받을 수 있는 유무선의 통신 매체
호스트(종단 시스템)
네트워크 가장 자리에 위치한 노드
-> 서버, 클라이언트, 개인 노트북 등이 대표적임
서버
어떠한 서비스(메일, 파일, 웹사이트 등)를 제공하는 호스트
서버라는 용어는 service(제공하다)에서 비롯되어서 손님에게 음식을 서빙(serving) 하는 하는 역할을 담당
클라이언트
서버에게 어떠한 서비스를 요청하고 서버의 응답을 제공받는 호스트
식당에서 종업원에게 서빙을 받으려면 손님이 먼저 요청을 해야하고 손님이 종업원에게 음식을 요청하면 종업원은 그 음식을 서빙함.
이런식으로 클라이언트는 서버에 정보를 요청하고 서버는 요청에 맞는 응답을 내려줌
중간 노드
네트워크 가장 자리에 위치하지 않은 노드로 호스트 간에 주고 받을 정보가 거치는 노드
-> 대표적으로 이더넷 허브, 스위치, 라우터, 공유기 등이 있음
네트워크 장비
호스트 간 주고 받는 정보가 원하는 위치까지 안정적이고 안전하게 전송될 수 있도록 해줌
통신 매체
각 노드를 연결하는 간선이 바로 통신 매체
유선 매체: 노드들을 유선으로 연결함
무선 매체: 노드들을 무선으로 연결함
메시지
통신 매체로 연결된 노드가 주고 받는 정보를 뜻함
결론적으로 네트워크는 호스트, 네트워크 장비, 통신 매체, 메시지로 구성되어 있음
LAN(Local Area Network)
가까운 지역(한정된 공간)을 연결한 근거리 통신망
WAN(Wide Area Network)
먼 지역을 연결하는 광역 통신망
-> 멀리 떨어진 LAN을 연결할 수 있음
인터넷이 WAN으로 분류됨
인터넷을 사용하기 위해 접속하는 WAN은 ISP(Internet Service Provider)라는 인터넷 서비스 업체가 구축하고 관리함.
LAN과 WAN을 제외하고 두 가지 더 나눌 수 있음
CAN(Campus Area Network)
학교 또는 회사의 여러 건물 단위로 연결되는 규모의 네트워크
MAN(Metropolitan Area Network)
도시나 대도시 단위로 연결되는 네트워크
WAN > MAN > CAN > LAN 순임
네트워크 교환 방식에는 대표적으로 두가지가 존재함.
회선 교환 방식
호스트들이 메시지를 교환하기 전에 두 호스트를 연결한 후 연결된 경로로 메시지를 주고 받는 방식
패킷 교환 방식
메시지를 패킷이라는 작은 단위로 쪼개서 전송함
패킷: 패킷 교환 네트워크 상에서 송수신되는 메시지의 단위
패킷 교환 방식은 회선 교환 방식과는 달리 정해진 경로만으로 메시지를 송수신하지 않음
패킷은 헤더, 페이로드, 트레일러(필수 X)로 이루어짐
헤더에는 주소에 관한 정보가 담김
주소: 송수신지를 특정하는 정보를 의미
유니캐스트
가장 일반적인 형태의 송수신 방식으로, 하나의 수신지에 메시지를 전송하는 방식
-> 송신지와 수신지가 일대일로 메시지를 주고 받는 경우
브로드캐스트
자신을 제외한 네트워크상의 모든 호스트에게 전송하는 방식
-> 브로드캐스트의 수신지는 브로드캐스트 도메인이며 이는 자신을 제외한 네트워크상의 모든 호스트임
브로드캐스트 도메인: 브로드캐스트가 전송되는 범위
프로토콜
노드 간에 정보를 올바르게 주고받기 위해 합의된 규칙이나 방법
모든 프로토콜은 저마다의 목적과 특징이 있기 때문에 이에 부합하는 정보도 달라질 수 있음
네트워크 참조 모델(네트워크 계층 모델)
네트워크를 통해 정보를 주고받을 때 정형화된 여러 단계를 거치게 되는데 이러한 과정을 계층으로 나눈 구조
네트워크 참조 모델은 이론에 중점을 둠
계층으로 굳이 나눈 이유
1. 네트워크 구성과 설계가 용이해짐
2. 네트워크 문제 진단과 해결이 용이해짐
OSI 모델
국제 표준화 기구(ISO: International Organization for Standardization)에서 만든 네트워크 참조 모델
-> 통신 단계를 7계층으로 나눔
OSI 7계층
세션: 통신을 주고받는 호스트의 응용 프로그램 간 연결 상태
TCP/IP 모델
이론보다는 구현에 중점을 둔 네트워크 참조 모델
TCP/IP 모델: 실용적 구현에 목적을 둠
TCP/IP 4계층
캡슐화
어떤 정보를 송신할 때 각 계층에서는 상위 계층으로부터 내려받은 패킷을 페이로드 삼아 프로토콜에 걸맞은 헤더(혹은 트레일러)를 덧붙인 후 하위 계층으로 전달함
역캡슐화
캡슐화 과정에서 붙였던 헤더 및 트레일러를 각 계층에서 확인한 뒤에 제거하는 것을 역캡슐화(디캡슐레이션)이라고 함
PDU
각 계층에서 송수신되는 메시지의 단위를 뜻함
상위 계층에서 전달받은 데이터에 현재 계층의 프로토콜 헤더(및 트레일러)를 추가하면 현재 계층의 PDU가 됨
각 계층 PDU
OSI 계층 | PDU |
---|---|
응용 계층 | 데이터(data) |
표현 계층 | 데이터(data) |
세션 계층 | 데이터(data) |
전송 계층 | 세그먼트(segment), 데이터그램(datagram) |
네트워크 계층 | 패킷(packet) |
데이터 링크 계층 | 프레임(frame) |
물리 계층 | 비트(bit) |
OSI 모델은 이론에 중점을 둔 참조지만 TCP/IP 모델은 실용적 구현을 둔 참조
-> 만들어진 목적이 다름
정답: 1번: 네트워크에 대한 이해는 프로그램을 만드는 과정에 도움을 주지 않습니다.
이유: 프로그램을 개발하는데 있어서 프로그램이 네트워크를 통해 다른 장치와 상호 작용하며 실행되는 경우가 매우 많기 때문에 네트워크에 대한 이해는 프로그램을 만드느 과정에 도움을 많이 주기 때문임
정답: 2번: TCP/IP 모델은 3개의 계층으로 통신 과정을 구분합니다
이유: TCP/IP 모델은 네트워크 엑세스 계층, 인터넷 계층, 전송 계층, 응용 계층으로 4계층으로 이루어짐
자바와 함께 병행하면서 공부해서 생각했던 것보다 학습 시간이 오래걸렸다...
평소 백엔드 개발을 하면서 네트워크 관련 지식이 중요하다는 것을 몸으로 느끼고 있었는데 이번 기회에 제대로 배워서 실무에서 써먹어야겠다.