개발의 길로 이끌어준 내 친구 따쓰가 도커를 제대로 한번 써보고 개념에대해 제대로 알아보라고했다. 나도 이번 프로젝트에서 써보긴 했지만, docker compose를 사용하지 않았다. 그래서 한번 써보겠다고 말했다. 그전에 친구가 네트워크에대해 먼저 알아야한다고 했다. 사실 맞는 말이다. 백엔드 개발자가 하는일이 간단하게 말해서 요청이오면 응답을 해주는거니 네트워크에 대해 잘 알아야 한다고 생각한다. 그래서 오늘 네트워크에 기본부터 다양한 지식들에대해 공부하고, 정리해보려 한다. 내껄로 만들어보자.
ㅇ 네트워크란?
정보를 나누고 관계를 형성하는 일을 네트워킹이라고한다. 네트워크는 사람, 사물등 어울러 사용된다. IT에선 어떻게 정의될까?
두 대 이상의 컴퓨터들을 연결하고 서로 통신할 수 있는 것을 말함.
몇 개의 독립적인 장치가 적절한 영역 내에서 적당히 빠른 속도의 물리적 통신 채널을 통하여 서로가 직접 통신할 수 있도록 지원해 주는 데이터 통신 체계다. 우린 네트워크를 통해 사람들과 연락하고 인터넷으로 정보를 얻고, 생산할 수 있다.
고로 네트워크는 통신 과정 전체를 아우르는 개념이라고 말 할 수 있다.
ㅇ LAN 과 WAN
이 내용은 내가 한번 블로깅 했다. IT기초지식에서 다뤘던 내용이다.
https://thcoding.tistory.com/4
다시한번 정리 해보자면, LAN은 근거리 영역 네트워크다. 공유기로 여러대의 디바이스들이 인터넷에 연결을하고 사용된다. 이것이 LAN의 형태다. 근거리기 때문에 구현이 쉽고 데이터를 주고받는데 오류가 적고 속도도 빠르다는 장점이 있다.
WAN은 광역 네트워크다. 지역이나, 지역을 넘어선 국가단위를 연결하는 네트워크다. 우리나라 삼대 통신사들도 전국에 회선을 설치하고 우리가 전국 어딜가나 이용할수 있는게 WAN이다. WAN은 범위가 넓기 때문에 속도가 느리고, 오류가 발생할 확률도 높다.
ㅇ 라우터
인터넷 발달에 따라 네트워크의 규모가 커지면서 LAN끼리 데이터가 올바르게 전달될 수 있는 장치가 필요해져서 나온것이 바로 라우터다. 라우터는 간단히 말해 데이터가 목적지에 원활하게 도착할 수 있도록 적절한 통신 경로를 안내하는 장치다.
라우터는 라우팅 테이블이라는 공간에 미리 다양한 경로의 정보를 저장하고 있다. 라우팅 테이블이란 최종 목적지의 IP 주소와 목적지에 도달하기 위해 경유해야 할 인근 라우터의 정보가 담긴 테이블이다. 라우터의 가장 중요한 일이 라우팅 테이블을 구성하는 것
경로를 저장하는 방법은 관리자가 직접 라우팅 테이블의 내용을 추가하는방법, 인근 라우터와 정보를 교환해 자동으로 경로 정보를 갱신하는 방법이 있다. 만약 무한루프에 빠지면 안되니 TTL이라는 유효기간도 정해둔다.
ㅇ 허브, 스위치
이 둘은 같은 네트워크 상에서 서로 다른 기기로 데이터 전송하기 위해 사용되는 장비다. 허브는 데이터를 자신에게 연결된 모든 기기에게 전달해주는 연결장비다. 한 포트에서 전기 신호가 오면 허브에 연결된 전체 포트로 연결하는 네트워크 전체를 목적지로 데이터를 전송하는 브로드 캐스트 통신 방식이다. 허브 통신방식은 어느 기기로 보내야할지 판단하지 않아서 편하지만, 한번에 하나의 장비만 데이터를 보낼 수 있어서 네트워크 성능이 저하된다. 여기서 생긴게 스위치다. 스위치는 데이터가 들어왔을 때 해당 데이터를 요청한 기기가 누구인지 파악하고 정확한 목적지로 전달하는 장비다. 출발지와 목적지가 명확히 하나씩만 있는 유니캐스트 방식이다.
ㅇ 프로토콜
프로토콜이란말은 규약 이란 뜻을 가지고있다. 약속이 됐다는 뜻이다. 주고받는 데이터의 형식이 다르면 통신이 어려우니, 보내는 쪽과 받는쪽에서 데이터의 형식을 지정했다. 네트워크 안에서 원활하게 통신을 하려면 각 상황에 맞는 프로토콜을 사용해야한다. http가 대표적인 프로토콜이다. 밑에서 자세히 다루겠다.
ㅇ HTTP
Hyper Text Transfer Protocol 의 약자로 하이퍼텍스트 링크를 사용해 웹페이지를 로드하는데 사용된다.
애플리케이션 계층 프로토콜이고, HTTP를 통한 일반적인 흐름엔 클라이언트 시스템에서 서버에 요청한 다음 서버에서 응답 메시지를 보내는 작업이 포함된다.
HTTP 요청에 포함되는것들 - HTTP 버전 유형, URL, HTTP메서드, HTTP 요청 헤더, HTTP 본문
HTTP 메서드란 익히 알고있는 GET POST PATCH DELTE등이다.
HTTP 요청 헤더란 키값 쌍에 저장된 텍스트 정보가 포함되어있고, 헤더는 모든 HTTP 요청에 포함된다. 클라이언트가 사용하는 브라우저 및 요청되는 데이터와 같은 핵심 정보를 전달한다.
포스트맨에서 요청을 보낼때의 헤더다.
요청 본문에는 사용자 이름 및 비밀번호 또는 양식에 입력된 기타 데이터와 같이 웹 서버에 제출되는 모든 정보가 포함됨.
HTTP 응답에 포함되는것들 - 상태코드, 응답 헤더, HTTP본문
상태코드는 1XX Informational, 2XX 성공, 3XX 리다이렉션, 4XX클라이언트 오류, 5XX 서버오류
4나 5가뜨면 열이 받는다. 2가뜨면 비로소웃음이나온다.
응답헤더는 응답본문에서 전송되는 데이터의 언어 및 형식과 같은 중요한 정보를 전달한다.
오른쪽위에 Status가 상태코드. 이건 응답 헤더의 모습이다.
ㅇ 패킷
네트워크에서 패킷은 큰메시지의 작은 세그먼트다. 네트워크를 통해 전송되는 데이터는 패킷으로 나뉜다. 그다음 이런 패킷은 패킷을 수신하는 컴퓨터 또는 장치에서 재결합된다. 이미지 파일을 웹서버에서 사용자의 컴퓨터로 단순히 전송되지 않는다. 데이터 패킷으로 분해되어 전송된 다음 사용자의 컴퓨터에서 원본사진으로 재조립된다.
ㅇ IP, TCP
IP는 인터넷의 주소 체계로, 장치들이 인터넷을 통해 통신할 수 있도록 하는 규칙의 집합이다. IP는 인터넷에 엑세스하는 모든 장치에 IP번호를 할당한다. 소스장치에서 대상 장치로 정보 패킷을 전달하는것이 핵심 기능이다. IP는 네트워크 연결이 이뤄지는 기본 방법으로, 인터넷의 기반을 확립한다. IP는 패킷순서지정, 오류검사를 처리하지 않음. 이것은 전송제어 프로토콜인 TCP가 하는 역할이다. TCP/IP는 퍼즐에 메시지를 작성해 우편으로 보내는것과 비슷하다. 퍼즐 조각들은 각각 다른 우편 경로를 통해 전달된다. IP가 각 조각이 목적지 주소에 도착하도록 하고, TCP는 도착지에서 올바른 순서로 조각들을 맞추고 누락되면 다시 보내달라 요청하고 조각을 받았음을 알려주는 역할을 한다. 오늘날 인터넷에서 사용되는 IP의 기본버전은 Ipv4이다. 근데 이건 가능한 주소의 수에 제약이 있어 새롭게 만들어진게 Ipv6.
ㅇ IP 주소의 형식
3개의 마침표로 구분된 4개의 십진수 형식으로 표시된다(IPv4의 경우). 두 부분으로 나눌 수있다. 첫번째 부분은 주소가 속한 네트워크를 나타내고, 두번째 부분은 해당 네트워크 내의 장치를 지정한다.
첫번째 부분의 길이는 네트워크의 클래스에 따라 변경된다. 네트워크는 A에서 E까지 레이블이 지정된 여러 클래스로 분류된다. A부터 E로 갈수록 네트워크의 크기는 작아진다. (D, E는 잘 안쓰임)
ㅇ IP주소의 작동 방식
컴퓨터의 IP주소는 집의 물리적 주소와 같다. 음식을 배달시키려면 물리적 주소를 알려줘야 한다. 예를 들어 사용자가 웹브라우저에 google.com 을 입력하면 google웹 서버에 콘텐츠를 보내달라는 요청이 시작된다. google에서 요청을 수신하면 어디로 콘텐츠를 전송해야할지 알아야하는데 우리가보낸 요청에 우리의 IP주소가 포함이되서 보내진다. 고로 google은 요청에 IP주소를 보고 그 주소로 콘텐츠를 전송해 표시한다. 이를 모두 조정하는 시스템이 DNS다. DNS는 도메인이름을 IP주소로 변환한다.
ㅇ IPv4, IPv6의 차이
위에서 설명했듯 IPv4는 가능한 주소의 수가 제약이 되어 IPv6가 나왔다고했다. IPv4의 주소형식은 점으로 구분된 4개의 숫자로 되어있다. 이는 32비트 형식이다. 약 43억개의 고유 IP주소가 있을 수 있다. 하지만 이건 좀 부족하다. 그래서 나온게 IPv6. 이건 더 복잡한 형식을 사용한다. 숫자와 문자가 하나 또는 두개의 콜론으로 구분된다. 128비트 방식이다.
ㅇ 서브넷 마스크
서브넷이란, 서브네트워크로 네트워크 내부의 네트워크다. 서브넷을 통해 네트워크 트래픽은 불필요한 라우터를 통과하지 않고 더 짧은 거리를 이동해 대상에 도달할 수 있다. 우편서비스와 마찬가지로 네트워크는 메시지가 가능한 한 직접이동할때 가장 효율적이다. 네트워크에서 다른 네트워크로 데이터 패킷을 수신하면 패킷이 대상까지 비효율적인 경로를 사용하지않도록 서브넷별로 해당 패킷을 정렬하고 라우팅한다.
그렇다면 서브넷 마스크란 뭘까? IP주소의 네트워크 부와 호스트 부의 경계를 식별하기위해 만든 숫자다. IP주소의32비트 에 대응한 32비트로 구성되어있음. 32개의 0과1로구성된 값이다.
서브넷 마스크를 사용하면 8비트 단위가 아닌 1비트 단위로 네트워크 부를 구성할 수 있기 때문에 더 세분화된 네트워크를 만들 수 있다.
참고한 자료들
https://www.whatap.io/ko/blog/149/
https://www.cloudflare.com/ko-kr/learning/ddos/glossary/hypertext-transfer-protocol-http/
'CS공부 > 네트워크' 카테고리의 다른 글
MAC주소, ARP, PORT, 패킷교환방식, 라우터, 액세스포인트, 허브, 스위치 (0) | 2024.01.12 |
---|---|
네트워크 계층, 모델, TCP/IP, Ipv4, Ipv6 (1) | 2024.01.05 |
의미부터 차근차근 (1) | 2024.01.04 |
네트워크(널널한 개발자)-2 (웹서비스) (0) | 2023.11.06 |
네트워크(널널한 개발자)-1 (0) | 2023.11.06 |