► 네트워크란?(네트워크 기술)
・ 서버와 클라이언트의 정보가 오고 가는 다리 역할을 하는 기술의 총칭을 의미한다.
・ 네트워크란 말은 연결되어 있다는 뜻으로 컴퓨터 네트워크는 데이터를 케이블에 실어 나르는 것을 의미한다. (무선은 전파로)
► 데이터 전송의 기본 단위 패킷
・ 데이터는 "패킷"이라고 부르는 작은 단위로 "나누어져 전송"된다.
・ 시작점부터 목적지까지 독립적으로 이동하며 네트워크의 다양한 경로를 통해 전달될 수 있다
・ 데이터의 형식화된 블록으로 pack과 bucket의 합친 말. 우체국의 화물을 생각하자
⌘ 과거 회선 교환 방식
이는 회선의 트래픽이나 이동 효율을 전혀 고려하지 않은 채 미리 정하는 방식. 보통의 통신이라 함은 데이터를 전송하는 시점의 트래픽, 혼잡도 등의 요인에 따라 효율이 달라지게 되는데, 회선 교환 방식은 데이터 전송 전에 이들을 고려하지 않고 이동 경로를 단정지어 버리기 때문에 데이터 전송 시 효율적이지 못한 경우가 발생하곤 한다. 또한 이미 설정된 이동 경로는 할당해제 될 때까지 다른 호스트들은 이용할 수 없다.
이후 나온 패킷통신
・ 미리 이동 경로를 정하지 않고 패킷 이라는 작은 단위로 나누어 다중 노드로 구성된 네트워크를 통해 전송하는 개념.
・ 전송될 데이터는 네트워크를 통해 전송되기 전에 패킷으로 쪼개지고, 각 패킷에는 고유 번호가 지정되어 있어서 네트워크를 거쳐 최종 수신지에 도착했을 때 번호 순서대로 결합되어 원래 데이터로 결합되는 방식
즉 패킷을 수신한 중간 노드가 패킷의 최종 목적지(수신지) 를 확인하고, 목적지까지 가는 다양한 경로중 딱 그 상황에서 가장 최적이라고 판단되는 경로를 따라 패킷을 이동시키는 '라우팅'을 해줘야 한다. 이러한 라우팅을 수행해주는 중간 노드가 '라우터'다.
⌘ 라우터 : 각 패킷을 올바른 경로로 안내하는 장비
⌘ 라우팅 : 라우터를 통해 경로를 이동하는 과정
-> 데이터를 한번에 통으로 보내지 않는 이유는 큰 데이터는 대역폭을 많이 차지하기 때문에 패킷의 흐름을 원활하게 하지 못하고 트래픽이 많아진다. 예를들자면 도로가 4차선인데 큰 탱크가 두 개 차선을 차지하고 있는 경우 일반적인 상황보다 길이 막힐 것이다. 이런 것을 방지하기 위해 패킷을 사용하는 것
⌘ 대역폭 : 신호를 전송할 수 있는 주파수 범위 (차선)
⌘ 트래픽 : 신호를 통과하는 패킷 (차)
⌘ 패킷 통신
⌘ 호스트에선 해당 네트워크가 사용하는 프로토콜을 기반으로 데이터를 작은 단위로 분할하고, 분할된 데이터를 각각의 앞에 패킷번호, 송신지 및 수신지 정보 등 다양한 정보를 담은 패킷 헤더를 붙여 최종적으로 '패킷'이라는 형태로 변환해 데이터를 전송한다
⌘ 이 데이터가 잘게 쪼개져 패킷이라는 단위로 변환되는 과정을 캡슐화 라고 한다.
패킷 각각의 라우팅은 중간 노드들의 혼잡도, 역량에 따라 다르기 떄문에 패킷이 순서대로 수신 호스트에 도착한다는 보장은 없다. 따라서 수신 호스트에서 송신 호스트가 전송한 패킷이 모두 도착했음을 인지했을 때, 해당 네트워크의 프로토콜에 의거해 패킷 헤더를 쭉 읽고, 패킷들의 순서를 정리해서 원래 데이터 형태로 정립하게 된다.
- 효율성: 네트워크 대역폭을 효율적으로 사용하고, 여러 사용자가 동시에 네트워크를 공유할 수 있다.
- 신뢰성: 각 패킷은 독립적인 경로를 통해 전송될 수 있어, 일부 경로에 문제가 생기더라도 다른 경로를 통해 목적지에 도달할 수 있다.
- 유연성: 다른 크기와 종류의 데이터를 전송할 수 있으며, 네트워크의 상황에 따라 동적으로 경로를 변경할 수 있다.
📦 실생활 예시
택배 보낼때 운송장 붙이는 행위도 캡슐화의 일종이라고 볼 수 있다. 해당 택배의 최종 목적지 정보 (주소)가 담겨있기 때문이다. 그리고 중간중간 거치는 택배 물류 Hub의 경우에는 네트워크를 이루는 라우터라고 할 수 있겠다, 왜냐하면 각 Hub에서는 가장 빠른 경로로 택배를 운송하기 위해 적절한 트럭에 상차시키는 행위 (간선 상차)를 하기 때문이다. 이는 라우팅에 빗댈 수 있다.
► 패킷의 구성 요소
1. 헤더 (비유하자면 상자와 봉투)
・ 각 패킷에는 두 개의 식별 변호가 있는데 첫 번째 정보 조각이 분할된 패킷 수를 나타내고, 두 번째는 완전한 정보의 일부로서 개별 패킷의 위치를 나타낸다
・ 소스 주소 : 패킷을 네트워크로 보내는 장치의 IP주소
・ 대상 주소 : 패킷이 전송되는 IP 주소
・ 버전 : 사용 중인 IP 버전을 식별하는 데 사용
・ TTL(Time to Live) : 패킷이 네트워크에 남아있을 수 있는 생존시간으로 이 패킷을 처리하는 각 라우터가 카운트를 하나 이상 감소시킨다.
・ 프로토콜: IP 패킷의 데이터 부분이 전달되는 전송 계층 프로토콜. TCP or UDP
2. 페이로드 (데이터)
・ 실제로 전송하고자 하는 메시지나 파일 등의 사용자 데이터
・ 패킷의 크기는 페이로드의 크기에 영향을 받으며, 네트워크의 종류나 프로토콜에 따라 패킷의 최대 크기가 정해진다.
3. 트레일러와 푸터 (비유하자면 서명)
・ 패킷의 끝을 나타내는 정보와 함께 오류 검출이나 수정을 위한 정보가 포함된다
・ CRC(Cyclic Redundancy Check)는 데이터가 전송 중에 손상되지 않았는지 확인
► 패킷 통신의 규약 중 하나 TCP/IP
(Transmission Control Protocol/Internet Protocol)
1. TCP : 신뢰성 있고 무결성을 보장하는 연결을 통해 데이터를 안전하게 전달해 주는 전송 프로토콜
- 안정성 검증
2. IP : 패킷들을 가장 효율적인 방법으로 최종 목적지로 전송하기 위해 필요한 프로토콜
- 효율성 검증
-> 인터넷은 전 세계 컴퓨터들이 서로 연결되어 있는 거대한 네트워크 집합. TCP/IP 프로토콜 채용
네티워크가 프로토콜에 의거하여 데이터를 캡슐화한다.라는 말에서 TCP/IP는 "프로토콜"에 해당한다.
・ TCP/IP가 제시하는 대로 데이터를 캡슐화하는 것이다. (이 외에도 다른 프로토콜이 제시되었지만 TCP/IP가 가장 효율적이라 정형화됨)
・ TCP/IP 프로토콜을 따르는 네트워크 통신이라면, 송신 호스트에서 전송할 데이터를 TCP/IP 4 계층이라는 계층 구조에 따라 순차적으로 캡슐화를 하여 네트워크에 전송된다.
・ 그리고 데이터를 수신하는 호스트에서도 이 계층구조에 따라 캡슐화된 패킷을 역순으로 포장을 뜯어가며 원래 데이터를 확인해 볼 수 있는 것
► TCP/IP의 4계층
TCP/IP는 총 4개의 계층으로 이루어져 있고 각 계층이 하는 역할이 명확히 구분되어 있다.
4계층 : 응용계층 (Applecation)
3계층 : 전송 계층 (Transport)
2계층 : 인터넷 계층 (Internet)
1계층 : 네트워크 인터페이스 계층 (Network Interface)
・ 송신 호스트에서 데이터를 보내기 위해서는 4계층 -> 1계층 까지 순차적으로 거쳐가며 데이터를 캡슐화 해야 한다
・ 최하 계층인 네트워크 인터페이스 계층은 이름에서 알 수 있듯 직접적으로 네트워크에 전기적 신호로 패킷을 전송하기 위한 엑세스 계층이다. 따라서 네트워크 엑세스 계층 이라고도 부른 다.
・ 수신 호스트에서 이를 수신받아 1계층 -> 4계층 까지 순차적으로 거쳐가며 데이터를 역캡슐화 해가며 최상 계층인 응용 계층에서 데이터를 수신받아 적절히 활용하게 된다.
⌘ 위 그림에서 계층 하나를 거칠 때마다 헤더가 하나씩 늘어나는 것을 확인할 수 있다. 각 헤더는 무의미하게 늘어만 가는 데이터가 아닌, 각 계층에서 주입하는 유의미한 정보로 해당 패킷을 수신 호스트까지 효율적으로 전속하기 위한 정보들을 담고 있다.
► 송신 호스트 전송 과정
송신 호스트 입장에서 살펴보면 오른쪽에서 왼쯕으로 캡슐화를 진행하게 된다.
・ 응용계층에서부터 네트워크 인터페이스 계창까지 이동하면서 추가되는 헤더
1. 응용계층 : 애플리케이션 헤더
・ TCD/IP를 사용하는 애플리케이션이 사용하는 프로토콜에 필요한 정보를 헤더로 담는다.
->HTTP 통신이면 HTTP 헤더를 붙이게 된다.
2. 전송계층: TCP 헤더 (송신지 포트번호 + 수신지 포트번호)
・ 해당 패킷의 전송지, 수신지 각각의 포트번호 정보를 담게 되어 수신 호스트에 도착했을 때 어떤 소켓에 데이터를 갖다줄 지에 대한 정보를 담게 된다. (UDT라는 다른 프로토콜도있음)
⌘ UDT 는 TCP와 함께 데이터 그램으로 알려진 단문 메세지를 교환하기 위해 사용되는 프로토콜. 데이터만 보내고 확인과 응답과 같은 절차를 생략할 수 있어 신속성이 높다. 주로 DNS,VoIP에 사용된다.
3. 인터넷계층 : IP헤더 (송신지 IP주소 + 수신지 IP주소)
・ 패킷의 송신지, 수신지 각각의 IP 주소 정보를 담게 되어 네트워크의 모든 라우터들이 이를 참조해 가장 효율적인 경로로 라우팅 해준다
4. 네트워크 인터페이스 계층 : 이더넷 헤더(송신지MAC주소 + 수신지 MAC주소)
・ 비교적 물리적인 정보를 담게 된다. 송신지 및 수신지의 MAC 주소를 담아 이더넷 카드를 통해 해당 패킷을 내보낸다.
► 수신 호스트 수신과정
송신 호스트에서 캡슐화를 한 순서 그대로 역순으로 역 캡슐화 해서 올라간다.
1. 수신호스트의 네트워크 인터페이스 계층이 패킷에 도착하면, 이를 확인하고 인터넷 계층으로 올려보낸다.
2. 인터넷 계층은 해당 해킷의 IP 헤더를 뜯어봤을 때 발신지를 확인하고 수신자가 자신이 맞다면 해당 패킷을 전송 계층으로 올려보낸다.
3. 전송계층은 해당 패킷의 TCP 헤더를 뜯어봤을 때 발신 및 수신 포트번호를 확인하여 응용 계층으로 패킷을 올려보낸다. 이 때 TCP 프로토콜을 사용했다면, 누락된 메세지가 있다면 재요청한다. 모든 패킷이 도착했다면 순서를 정렬하여 원레 데이터 형태로 정립하여 수신 포트번호에 해당하는 프로세스 (소켓) 에 내보낸다.
4. 응용계층은 해당 패킷의 애플리케이션 헤더를 뜯어보고, 도착한 데이터에 맞게 적절한 상호작용,조취를 취한다.
ex) HTTP 통신이라면 웹 페이지를 읽어들이는 작업
► LAN과 WAN
・ 네트워크는 크게 LAN(Local Area Network,)와 WAN(Wide Area Network)로 나뉜다
・ LAN은 가정이나 사무실과 같은 비교적 좁은 지역에 있는 네트워크를 말한다
・ WAN 은 도시, 국가, 대륙을 넘나드는 네트워크를 말한다.