일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- AWS
- RecSys
- BERT이해
- HTTP
- chatGPT
- 플랫폼
- docker
- 머신러닝
- llm
- 자연어처리
- aws자격증
- 중국플랫폼
- transformer
- BERT
- 추천시스템
- 클라우드자격증
- 네트워크
- 미국석사
- BANDiT
- MAB
- TFX
- 머신러닝 파이프라인
- MSCS
- 메타버스
- MLOps
- COFIBA
- Collaborative Filtering Bandit
- nlp
- 언어모델
- 클라우드
- Today
- Total
Julie의 Tech 블로그
네트워크 - (2) IP와 웹에 대하여 본문
앞전에 살펴본 OSI모델의 7계층에서 '네트워크', '전송', '응용' 계층에 대해 순서대로 알아볼 것이다.
네트워크 계층
네트워크 계층은 서로 다른 네트워크에 데이터를 전송할 수 있도록 해준다. 즉 네트워크 간 통신이 가능하도록 하는 것이다. 이 때 '라우터'라는 장비가 필요하게 된다.
라우터는 IP 주소를 통해 도달하고자 하는 네트워크 내 컴퓨터를 식별하게 되고, 이 경로를 정의하는 과정을 '라우팅'이라고 한다.
(라우터는 목적지에 따라 최선의 경로를 알려주는 역할을 한다)
IP주소에 대해
IP주소는 ISP(인터넷 서비스 제공자)로부터 제공받을 수 있다.
버전은 IPv4 IPv6로 두 가지로 이루어져있다.
IPv4만 존재하다가, 주소가 부족하게 되면서 IPv6라는 개념이 생겨나게 되었다.
IP주소에는 공인 IP와 사설 IP가 있다.
공인 IP는 ISP가 제공하는 주소이고, 보통 인터넷에 직접 연결될 경우 공인 IP를 사용하게 되어있다.
반면 특정 공간의 '랜'으로 연결된 컴퓨터는 사설 IP를 받게 된다.
이 두 주소는 2진수의 32비트를 사용하고 있다.
IP주소는 네트워크 ID와 호스트ID로 구성되어 '어떤 네트워크'의 '어떤 컴퓨터'인지 알 수 있게 해두었다.
IP주소는 클래스에 따라 3가지로 분류가 되는데, 각 분류별로 IP주소 범위가 정해져있다.
A클래스 공인IP주소 범위 |
1.0.0.0 ~ 9.255.255.255 |
11.0.0.0 ~ 126.255.255.255 |
B클래스 공인IP주소 범위 |
128.0.0.0 ~ 172.15.255.255 |
172.32.0.0 ~ 191.255.255.255 |
C클래스 공인IP주소 범위 |
192.0.0.0 ~ 192.167.255.255 |
192.169.0.0 ~ 223.255.255.255 |
IP주소는 네트워크 주소와 브로드캐스트 주소로 또 나뉜다.
네트워크 주소는 전체 네트워크 중 규모가 작은 네트워크를 구분하고자 하는 데 사용되고,
브로드캐스트 주소는 네트워크에 속한 모든 장비에 한꺼번에 데이터를 전송하고자 할 때 사용되는 주소이다.
앞서 살펴본 A클래스와 같이 큰 네트워크의 경우 '서브넷'이라는 작은 네트워크 단위로 분할한다.
이 경우 IP주소를 더 효율적으로 활용할 수 있다. 본래 호스트ID로 사용되던 일정 부분을 서브넷ID로 변환하여 네트워크ID + 서브넷ID + 호스트ID로 IP주소가 구성된다.
이 때 네트워크ID와 호스트ID 사이의 구분을 위해 서브넷 마스크를 사용한다.
두 가지로 볼 수 있는데, 값을 고정하거나, prefix 표기법을 사용하거나 이다.
1- A클래스는 255.0.0.0 이 서브넷 마스크이다
2- B클래스는 255.255.0.0 이 서브넷 마스크이다
3-C클래스는 255.255.255.0이 서브넷 마스크이다.
prefix표기법을 사용하게 되면, IP주소 뒤에 /24 또는 /32를 붙이는 것이다.
라우터에 대해
앞서 살펴본 라우터가 있다면, 네트워크를 분할할 수 있다.
(하지만 스위치와 허브는 네트워크를 분할할 수 없다.)
라우터를 통해 다른 네트워크에 있는 컴퓨터로 데이터를 전송하고자 할 경우 '게이트웨이'와 '라우팅'이 필요하다.
라우터에는 라우팅 테이블이 있는데, 여기엔 경로 정보가 등록되어있다.
여기서 한 번 정리를 해보자.
WAN은 광역 네트워크로 ISP가 제공하는 공유기를 통해 공인 IP주소를 받게 된다.
이 공인 IP주소(public address)를 통해서 WAN과 연결된다.
같은 LAN안에 있다면 public address도 전부 동일하게 된다. (findip.kr 로 알아볼 수 있음)
LAN은 지역 네트워크로 라우터를 통해 여러 네트워크로 나뉘게 되며,
각각의 컴퓨터는 사설 IP주소(private address)를 지니게 된다.
네트워크는 동일한 네트워크 안에서 통신이 가능하다.
만약 사설 네트워크에 속한 컴퓨터가 인터넷과 통신이 필요할 경우,
사설 IP를 공인 IP로 변환하는 작업(NAT)을 통해 요청하게 된다.
네트워크 주소는 작은 네트워크를 식별하는 데 사용되는 주소이다.
동일한 네트워크 내에 있는 모든 컴퓨터들은 동일한 네트워크 주소를 갖게 되고,
이 네트워크 주소가 다른 컴퓨터간의 통신을 하기 위해서는 라우터의 IP주소, 즉 기본 게이트웨이를 통해야한다.
기본 게이트웨이는 네트워크의 출입구와 같은 역할로, 내가 다른 네트워크에 속한 컴퓨터와 통신할 때, 라우터의 IP주소를 지정해야한다.
전송 계층에 대해
OSI 모델의 7계층 중 네트워크 계층 다음인 전송 계층에 대해 알아보자.
신뢰할 수 있는 데이터를 올바른 도착지로 전송하도록 하는 역할을 한다.
네트워크 계층의 경우 데이터를 전달하는 역할이었다면,
전송 계층은 1) 전달을 확인하고, 2) 정확히 어떤 어플리케이션에 전달할 것인지를 판별한다.
전송에 대해 아래와 같이 구분할 수 있다.
1. 신뢰성/정확성 - 연결형 통신. 도착지와의 연결을 통해 데이터를 지속적으로 확인 ex. TCP
2. 효율성 - 비연결형 통신. 도착지와의 연결을 않고 데이터를 일방적으로 전송 ex. UDP
TCP
데이터 전송에 사용되는 캡슐화된 데이터의 구조를 뜯어보면,
TCP 헤더에 '코드 비트'라는 이름으로 6비트 공간이 있다.
이 비트는 연결의 정보를 기록하는 곳인데, ACK(확인)와 SYN(연결)으로 구성되어 있다.
최초에 데이터 전송을 위해 연결을 묻는 SYN을 보내고, 상대에서 연결을 OK해주는 ACK를 보낸다.
이 때 데이터를 전송해도 될것이냐 묻는 SYN을 다시 보내고, 상대 역시 확답을 주는 ACK를 보낸다.
데이터를 본격적으로 전송하기 전에, 연결을 확인하기 위해 패킷을 3 번 정도 주고받게 되고, 이 과정을 3-way handshake라고 부른다.
TCP 헤더에는 '일련번호(Sequence number)'와 '확인 응답 번호(Acknowledgement number)'라는 것이 있어 두 컴퓨터간 데이터를 주고 받을 때 데이터가 잘 전송되었는지를 중간중간 확인할 수 있다.
송신측에서는 일련번호로 데이터를 구간별로 나누어 몇 번 째 데이터가 전송되고 있는지를 보내고,
수신측에서는 확인 응답번호로 일련번호 + 데이터 구간 크기를 보내어 잘 전송되었는지를 확인해준다.
이 과정을 데이터를 주고받을 때 마다 1번씩 진행하게 되면 효율적이지 않기 때문에,
윈도우 크기 라는 항목이 TCP헤더에 있어 송수신측이 서로 최초에 연결시에 각 윈도우 크기를 주고받는다.
송신측은 수신측으로부터 받은 윈도우 크기에 맞추어 데이터를 세그먼트화하여 동시에 보내게 된다.
출처 : http://www.ktword.co.kr/abbr_view.php?m_temp1=1889
앞서 전송계층이 맡고 있는 역할 중 하나인 '어떤 어플리케이션으로 보낼 것인지'에 대답은 TCP 헤더의 '출발지 포트번호'와 '도착지 포트번호'로 알 수 있다.
포트번호로 어떤 애플리케이션인지를 구분할 수 있는데,
0~1023 : 잘 알려진 포트(주요 프로토콜이 사용)
1024 : 잘 사용하지 않음
1025~ : 랜덤포트
대표적인 예로는 SSH 연결은 22번 포트이고, HTTP는 80 포트를 사용한다.
UDP
효율성을 중시하는 UDP는 보통 스트리밍 데이터를 전송시에 사용된다.
UDP는 TCP와는 달리 그 성격에 따라 브로드캐스트 통신을 할 수 있다.
응용계층
서버와 클라이언트 개념에 대해 짚고 넘어가자.
일반적으로 서버는 서비스를 제공하는 측이고, 클라이언트는 서버로부터 서비스를 제공받는 쪽이다.
서버와 클라이언트쪽의 어플리케이션들이 서로 통신하기 위해 응용계층을 사용한다.
이 둘 간의 통신은 '프로토콜'을 통해서 이루어진다.
웹사이트의 경우 HTTP, 파일의 경우 FTP, 메일은 SMTP 를 사용한다.
OSI 모델의 계층에 사용되는 프로토콜과 기술을 정리하면 아래와 같다.
웹 서버에 대해 알아보자.
웹은 WWW를 부른다. WWW는 HTML, URL, HTTP 의 세 가지 기술로 이루어진다.
HTML은 마크업 언어이고, 주로 웹사이트를 개발할 때 문장과 그를 꾸미는 태그를 사용하는 구조로 되어있다.
하이퍼텍스트도 포함할 수 있는데, 이미지나 링크 등을 담을 수 있다.
HTTP의 경우 클라이언트가 웹서버의 80포트를 통해 HTTP통신을 하게 된다. 서버에 request를 보내고, 클라이언트는 response를 받게 된다.
DNS는 웹주소를 입력하면 IP주소를 입력하지 않고도 웹에 접속할 수 있게 해준다.
우리가 보통 www.naver.com 을 입력하고도 웹에 접속할 수 있는 이유가 DNS 때문이다.
DNS서버는 전 세계적으로 연결되어 있어 어디든 URL을 통해 접속할 수 있다.
이상 IP와 웹서버에 대해 간단하게 개념을 살펴보았다.
다음 글에서는 전체 계층간의 흐름과 무선 랜에 대해 살피며 네트워크에 대한 공부를 마무리하려고 한다.
참고자료
모두의 네트워크, 미즈구치 카츠야
https://book.naver.com/bookdb/book_detail.nhn?bid=13735927
모두의 네트워크
네트워크를 전혀 몰라도 괜찮다!초보자와 비전공자를 위한 가장 쉬운 네트워크 입문서[모두의 네트워크]는 이제 막 네트워크를 공부하기 시작했거나 공부해야겠다고 마음먹은 초급자를 대상으로 한 입문서다. 네트워크의 개념, 비트, 바이트부터 OSI 계층, 무선 랜 구조까지 160개의 일러스트와 유쾌한 캐릭터들의 대화로 설명해 그림책을 읽듯 쉽고 재미있게 네트워크 관련 지식을 익힐 수 있다. [모두의 네트워크]로 누구나 쉽게 네트워크를 익혀 보자!
book.naver.com
'Tech' 카테고리의 다른 글
리눅스 - (3) 파일 시스템과 저장장치 (0) | 2021.05.12 |
---|---|
네트워크 - Wireshark를 통해 패킷 공부하기 (0) | 2021.05.12 |
리눅스 - (2) 메모리 (0) | 2021.05.12 |
네트워크 - (1) 기본 구조와 계층 (0) | 2021.05.12 |
리눅스 - (1) 기본 구조와 프로세스에 대해 (0) | 2021.05.12 |