Cloud Wave

[Network] 네트워크란?

eunmiee 2023. 12. 27. 01:16

시작하며


안녕하세요!

오랜만에 올리는 포스팅이네요. 최근에 Cloud Wave라는 클라우드 관련 교육을 수강하게 되었는데요!

1주차동안은 네트워크 기초에 대해 배우고 있어요ㅎㅎ

하루종일 네트워크 공부만 하다보니 쪼오끔 힘들긴 합니다만.. 재미는 있어서 나름 즐기는 중이예요 하핫

그래서 복습하는 개념으로 오늘은 네트워크 기초에 대한 내용을 정리해보려고 합니다.

학부과정에서 컴퓨터네트워크를 수강했었지만, Cloud Wave 과정에서 실습 활동을 진행하면서 중간중간 하나씩 놓친 개념들을 알아갈 수 있어서 많은 도움이 되고 있답니다.

 

그럼 오늘 포스팅 시작하겠습니다!

 

 

우선 기본적인 컴퓨터 네트워크 개념은 알아봐야겠죠?

 

01 컴퓨터네트워크란?


떨어져있는 네트워크를 연결하는 것을 의미합니다. 즉, 단말 연결을 말하는 것이죠!

그 예시로 살펴보면 파일 공유나 이메일 등 여러 시스템을 공유하기 위해 사용되고 있어요.

이부분들은 작은 의미의 컴퓨터 네트워크로 볼 수 있답니다.

이외에도 웹서비스에 의한 정보 공유나 무선장비를 이용한 통신들이 있습니다.

 

 

LAN이란?


LAN이란 근거리 통신망으로 사무실이나, 작은 공간에서 사용됩니다.

즉, 조직 내부나 동일 건물 등 비교적 좁은 지역을 연결하기 위한 네트워크라고 말합니다.

허브나 스위치를 이용하여 연결하고 라우터 없이 연결 시켜 놓은 장치를 의미합니다.

그렇기 때문에 라우터 연결없이 같은 LAN 상에서는 기기들이 통신이 가능해요!

그 예시로 프린터나 스캐너 같은 것들이 있죠

 

LAN은 거리가 가깝기 때문에 높은 대역폭으로 대용량의 데이터를 빠르게 전송 가능합니다.

그만큼 전파지연이 적고, 거쳐오는 단말이 적기 때문에 고속으로 처리가 가능하답니다!

 

WAN이란?


WAN이란 LAN들을 연결시켜 놓은 네트워크입니다.

그렇기 때문에 WAN은 LAN이 있어야만 의미가 있다고 볼 수 있죠!

일반적으로 라우터를 통해 연결이 되는데, L3장비를 이용해서 연결이 가능합니다.

WAN의 예시로 살펴보자면, 임대회선이나 VPN, MPLS에서 사용하는데 잘 와닿지 않죠?

하나씩 살펴봅시다.

 

임대회선은 통신회사를 통해 전용 회선 이용이 가능합니다. 즉 서울 - 부산 간 본사에 사용이 가능하게 되는 것이죠.

그러나 이는 비용이 많이 든다는 단점이 있기도 해요..

VPN은 일반적인 공중망을 의미해요. 전용선과 같은 효과를 줍니다.

이는 비용이 저렴하다는 장점이 있어요.

MPLS의 경우, 일반적으로는 사용하지 않고 사업자에서 사용됩니다.

 

WAN은 전파지연이 긴 만큼, 데이터 전송 속도가 느립니다.

 

Internet 이란?


인터넷은 다수의 네트워크가 서로 접속하여 하나의 큰 네트워크로 통합된 것을 의미합니다.

즉, 모든 네트워크를 연결시켜 놓은 것으로 볼 수 있는거죠!

인터넷만 연결되어 있다면 어디서든지 나의 위치 상관없이 접근이 가능합니다.

인터넷 또한 LAN을 연결시켜놓은 것이기 때문에 WAN으로 간주됩니다.

 


 

 

이렇게 기본적인 컴퓨터 네트워크에 대한 내용을 살펴 보았습니다!

이번에는 데이터를 어떤 식으로 주고 받을 것인가?에 대해 생각해보도록 하겠습니다.

 

우선, 프로토콜에 대해서 먼저 이해를 해야해요.

프로토콜이란?


프로토콜의 어원은 proto + kollen으로 맨처음 + 붙이다의 의미를 합쳐 맨 처음 붙이다의 의미를 갖습니다.

즉, 공증 문서에 효력을 부여하기 위해 맨 처음 붙인 것을 의미하게 되는 것이죠.

이를 데이터 통신에서 규약으로 사용하면서 데이터를 주고 받기 위한 규약으로써 존재하게 된 것이 바로 포로토콜입니다!

 

프로토콜은 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신규약입니다.

즉, 컴퓨터는 통신을 할 때 매체를 통해 데이터를 주고 받을 것인데 이러한 과정에서 서로 읽고 공유할 수 있도록 규칙을 설계한 것이죠!

일반적으로 컴퓨터는 0과 1로 대화를 하는데, 여기서 단말 간에 데이터를 그대로 읽고 쓰기 위해 프로토콜을 사용하는 것입니다.

예전에는 업체마다 각자의 프로토콜을 만들어 사용했지만 지금은 누구나 사용가능 해야하기 때문에 표준으로 만들어진 것이죠

결론은 장치들이 데이터를 주고 받으려면 프로토콜이 필요하다! 라고 생각하시면 됩니다.

 

이번엔 프로토콜의 기능과 구성을 살펴볼까요?

 

프로토콜의 기능

분할 및 재조립

분할

데이터를 송신측에서 보내게 될 때, 데이터를 한꺼번에 전송하지 않고 쪼개서 보내게 되는데 긴 데이터 블록을 손쉽게 전송할 수 있도록 작게 쪼개어 전송하는 것

재조립

수신측에서 쪼개어 보낸 데이터를 다시 합치는 과정으로 원래의 메세지로 복원 하는 기능

 

캡슐화

프로토콜에 적합한 데이터 블록을 만들기 위해 데이터에 정보를 추가하는 것

etc. 플래그, 주소, 제어정보, 오류 검출 부호 등을 부착하는 기능

 

연결제어

비연결 데이터 전송과 연결 위주 데이터 전송을 위한 통신로를 개설/유지/종결하는 기능

 

동기화

두 통신 객체의 상태를 일치 시키는 기능

 

순서제어

연결 위주의 데이터를 전송할 때 송신 측이 보내는 데이터 단위 순서대로 수신 측에 전달하는 기능

 

오류제어

데이터 전송 중 발생할 수 있는 오류나 착오 등을 검출하고 정정하는 기능

 

주소 설정

발생지, 목적지 등의 주소를 명기하여 데이터를 정확하게 전달하는 기능

 

다중화

하나의 통신로를 여러 개로 나누거나 회선 여러 개를 하나의 통신로로 변환시켜 다수의 가입자가 동시에 통신할 수 있는 것

 

 

구성요소

Syntax(형식)

데이터를 어떻게 구성할 것인가? 어떻게 해석할 것인가?

 

Semeantic(의미)

데이터를 어떻게 제어할 것인가? 오류는 어떻게 처리할 것인가?

 

Timing(순서)

통신하는 속도와 속도의 조절, 데이터 전송의 순서 관리

 

 

자, 아직까지 프로토콜에 대한 감이 잘 안오시나요? 실생활에서 어떻게 쓰이는지 함께 살펴볼게요:)

 

HTTPS

자, 이건 저의 현재 티스토리 URL인데요!

이부분을 보시면 현재 https 프로토콜을 사용하고 그 뒤에는 해당 자원에 대한 내용을 표기해둔 것입니다.

이와 같이 https 또한 프로토콜인것이죠!

 

이 외에도 더 다양한 프로토콜이 존재합니다.

HTTP : HTML을 주고 받는 프로토콜
HTTPS : HTTP + Secure
FTP : 이메일
RTSP : 실시간 스트리밍

 

자, 여기까지 프로토콜에 대한 이야기였는데 이해가 되셨을까요?

이번에는 위에서 배운 프로토콜의 개념을 가지고 조금 더 나아가 공부를 해볼게요.

아까전에 프로토콜에 굉장히 많은 기능들이 있었죠?

그 기능들을 한번에 다 처리를 하는 걸까요?

 

한번 생각해보아요!

 

OSI 7 Layer


OSI 7 layer

OSI 7 계층은 통신이 일어나는 과정을 7단계로 정의한 국제 통신 표준 규약입니다.

위에서 배웠던 프로토콜의 기능들이 해당 계층 단계에서 각자의 역할을 한다고 보시면 돼요!

 

OSI 7계층의 경우, PDU(Process Data Unit)로 각 계층에서 전송되는 단위가 존재합니다.

 

PDU

각 계층에서 전송되는 단위

layer PDU
4 Segment(TCP), Datagram(UDP)
3 Packet
2 Frame

 

OSI 7 Layer 기능

Layer content Protocol
7 : 응용 계층 네트워크 프로그램 개발 시 인터페이스 제공
웹 브라우저, FTP 프로그램 등
HTTP, SMTP, FTP, Telnet
6 : 표현 계층 데이터 표현, 압축, 암호화 ASCII, MPEG, JPEG, MIDI
5 : 세션 계층 원격 장치와의 세션 연결 수립, 유지, 해제 NetBIOS, SAP, SDP, NWLink
4 : 전송 계층 전송할 데이터를 링크로 보낼 수 있는 크키로 세그멘테이션, 오류제어, 상위 프로토콜 연결(포트 번호) TCP, UDP, SPX
3 : 네트워크 계층 로컬 시스템과 원격 시스템의 논리적인 주소 추가(IP 주소) IP, IPX, ICMP
2 : 데이터 링크 계층 상위 계층에서 내려운 데이터에 링크의 종류에 따라 추가적인 정보(LAN의 경우 MAC 주소), 오류 체크 기능(FCS) 추가 Ethernet, Token Ring, FDDI, Apple Talk
1 : 물리계층 2계층에서 만들어진 데이터를 전기신호나 무선 시호로 변환.
커넥터 케이블 등의 물리적인 장치 정의
없음

 

 

OSI 7 Layer vs TCP/IP Model


TCP/IP는 OSI 7계층 중 L3, L4를 다루는 프로토콜로 볼 수 있는 것이죠.

3계층에서는 IP, 4계층에서는 TCP로써 대표하는 것들을 묶어서 표현한 것이 바로 TCP/IP 입니다.

사실상 인터넷 프로토콜을 대표하는 용어로 사용되고 있는 것이죠!

즉, TCP/IP는 현재 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신규약(프로토콜)의 모음으로 생각하시면 됩니다.

 

OSI Model과 TCP/IP Model

 

OSI 7 계층과 TCP/IP 모델은 위 그림과 같이 약간 다른 계층으로 구분되어져 있습니다.

필요한 정보들끼리 나누어 붙여서 전송하고 확인하도록 계층이 분리되어 있는 것이죠.

계층이 없다면 필요한 정보들이 하나로 뭉쳐 저장되기 때문에 트러블 슈팅에서도 문제가 생기게 될 겁니다.

TCP/IP는 물리계층이 없다는 차이도 있고, 계층에 해당하는 프로토콜을 모아둔 상태로 볼 수 있습니다.

 

더 자세한 스택 정보는 해당 링크를 통해 보시면 이해가 잘 되더라구요!

 

 

지금까지 배웠던 TCP/IP 그리고 HTTP에 대해서도 아주 살짝 알아봤는데요.

 

실습을 통해 OSI 7 layer에 대해서 한번 살펴보도록 합시다

 

Wireshark 실습


와이어샤크에 접속해보면 트래픽을 직접 날리지 않아도 많은 패킷들이 캡쳐되고 있는 것을 확인할 수 있습니다.

그건 바로 백그라운드에서 돌아가는 트래픽 때문이랍니다.

wireshark

위 사진은 HTTP Get 요청에 대한 패킷을 캡쳐한 일부분입니다.

Ethernet II부터 밑에 순서로 각각 2, 3, 4, 7계층을 의미하고 있습니다.

각 계층에서 7-3계층까지는 데이터가 만들어지는 과정에서 변동이 생기지 않습니다.

2계층에서 데이터 링크에 따라 (이더넷인지, 무선인지, 랜인지) 변동이 생깁니다.

물론, NAT를 사용하게 될 경우, 3계층에서도 데이터의 변동이 생기기도 한다는 것을 참고해주세요!

NAT에 대한 내용도 조만간 포스팅 하도록 하겠습니다 😊

 

해당 패킷 정보에 대해 열어보면 HTTP 프로토콜 헤더 구조에 대해서도 살펴볼 수 있는데요.

현재 GET요청으로 호스트는 192.168.200.222 인 것을 확인할 수 있습니다.

 

더 자세한 내용은 해당 링크를 통해 알 수 있습니다.

 

다음은 헤더들을 한번 살펴봅시다!

 

Header 정보 살펴보기


HTTP header

http header

http의 header는 HTTP 전송에 필요한 모든 부가 정보를 갖고 있습니다.

즉, body를 제외한 필요한 메타정보를 모두 가졌다고 생각하면 되는 것이죠.

예를 들면, 메세지 바디의 내용, 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 서버 애플리케이션 정보, 캐시 관리 정보 등이 있습니다.

표준 헤더가 매우 많고, 필요 시 임의의 헤더 추가 기능도 존재합니다.

 

TCP header

TCP header

TCP는 여러 개의 필드로 이루어진 20byte, 즉 160bits의 헤더를 사용하며, 각 필드의 비트를 0과 1로 변경하여 전송하고자 하는 세그먼트의 정보를 나타냅니다.

여기서 하나씩 살펴보도록 할게요.

우선, 송신포트와 수신포트가 가장 먼저 보이는 데, 이는 세그먼트의 출발지와 목적지를 나타내는 필드로써 각각 16 bits를 할당 받습니다.

이때, 출발지와 목적지 주소를 판별하기 위해서는 IP주소와 포트번호가 필요하죠.

IP주소는 L3에서 IP헤더에 담기기 때문에 TCP 헤더에는 IP 주소를 나타내는 필드가 없고 포트를 나타내는 필드만 존재합니다.

 

다음으로는 시퀀스 번호를 살펴봅시다. 시퀀스 번호는 전송하는 데이터의 순서를 의미하고 32bits를 할당받습니다. 

시퀀스 번호는 수신자 측에서 쪼개진 세그먼트의 순소를 파악하여 올바른 순서로 데이터를 재조립할 수 있도록 합니다.

 

다음으로는 checksum을 살펴봅시다.

체크섬은 데이터를 송신하는 중에 발생할 수 있는 오류를 검출하기 위한 값으로, 전송할 데이터를 16bits씩 나눠서 차례대로 더해가는 방법으로 생성합니다. 송신측과 수신측의 체크섬을 더해서 모든 비트가 1이라면 데이터가 정상이라고 판단할 수 있습니다.

 

마지막으로 window Size는 한번에 전송할 수 있는 데이터의 양을 의미합니다. 윈도우의 최대 크기는 64KB입니다.

IP header

IPv4 header

IP header를 살펴보겠습니다.

 

대표적으로 수신자 IP, 송신자 IP가 존재하고 있고 이는 당연히 송신측과 수신측의 IP 주소를 의미합니다.

 

TTL이란 데이터를 전달할 수 없는 것으로 판단이 되면 패킷은 소멸이 되는데, 그 전에 데이터가 장치를 이동할 수 있는 단계의 수를 나타낸 것 입니다. 일반적으로 1-255사이의 값을 두고 -1씩 감소하게 됩니다.

 

프로토콜은 상위 계층의 프로토콜읠 의미합니다.

etc. 1-ICMP, 2 - IGMP, 6 -TCP, 17 - UDP

 

 

마무리


이렇게 오늘의 포스팅을 통해 "네트워크가 무엇일까?"에 대해 생각을 해보았습니다.

포스팅을 하면서 아직도 많은 부분이 부족하다는 생각이 드네요..

오늘 포스팅이 조금 부족할지라도 끝까지 읽어주셔서 정말 감사하고, 부족한 부분이나 오개념이 있다면 언제든 말씀해주세요.

 

감사합니다!

 

 

 

 

📚 참고 문헌

https://computer-science-student.tistory.com/377

 

프로토콜(Protocol)이란? - 정의, 기본 요소, 종류, 기능

프로토콜(Protocol)이란? 통신 프로토콜 또는 통신 규약은 컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계이다. 즉 통신 규약 및 약속이다. 프로토콜의 기본 요소 구

computer-science-student.tistory.com

https://evan-moon.github.io/2019/11/10/header-of-tcp/

 

TCP의 헤더에는 어떤 정보들이 담겨있는걸까?

저번에 HTTP/3는 왜 UDP를 선택한 것일까? 포스팅을 진행하며 TCP에 대해 간단한 언급을 했었지만, 해당 포스팅에서는 기존의 HTTP에서 사용하던 TCP에 어떤 문제가 있었는지에 집중해서 이야기했었

evan-moon.github.io

https://wonit.tistory.com/308

 

[HTTP-Header] HTTP 헤더란? 그리고 Header의 종류

HTTP 헤더는 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 한다. 우리가 지난 시간에 HTTP 메시지에 대해서 알아보았을 때, 다음과 같은 메시지가 클라이언트, 서버

wonit.tistory.com