벌써 금요일
특히 이번주는 더욱 더 빨리 간 것 같다.
다른 날보다 이번주의 공부량이 엄청나게 많았다.
알고리즘 문제를 풀고자하는 집착? 때문일까나…

image

오늘은 드디어 웹에 대해서 공부해보는 날이다.
나중에 볼 수 있도록 꼼꼼히 정리해둬야겠다.


오늘 배울 것은
네트워크를 만드는 기술과, 웹을 구성하는 기술들에
대해서 학습할 예정이다.

두루뭉술하게 알고 있던 내용들을 차근차근 정리해보자!!

TCP/IP

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

Transmission Control Protocol / Internet Protocol의 약자이다.

image

위의 사진으로 알 수 있듯이 TCP/IP의 계층구조를 볼 수 있다.

1층(네트워크 접근 계층) : Ethernet, wifi … etc
2층(인터넷 계층) : IP,ICMP,ARP,RARP
3층(전송 계층) : TCP,UDP … etc
4층(응용 계층) : HTTP,DNS,FTP … etc

각층마다 역활이 정해져 있고 위와 같이 종류가 있다.

1층 - 물리적으로 네트워크에 연결해서 기기간에 전송이 가능하도록 하는 역할
2층 - 네트워크 주소를 기반으로 데이터 전송하는 역할
3층 - IP와 어플리케이션 중개해 데이터를 확실히 전달하는 역할
4층 - 애플리케이션에 맞추어 통신


TCP와 UDP

3층 전송계층의 대표 TCP와 UDP를 비교해보자.

특징 TCP UDP
서비스 타입 연결 지향적 프로토콜 데이터그램 지향적 프로그램
신뢰성 표적 기기까지의 전송 보장 O 표적 기기까지의 전송 보장 X
순서 보장 전송하는 패킷의 순서가 보장된다. 패킷순서가 보장이 안된다. 패킷 순서를 보장하려면, 애플리케이션 레이어에서 관리되어야 한다.
속도 UDP와 비교해 느리다 TCP와 비교해 빠르다. 단순하며 효율적

TCP와 UDP 통신에 대해선 어느정도는 알고있었다.
이전에 직업이 TCP,UDP 통신을 이용해 여러기기의 데이터를 받아오는
프로그램 작업을 꽤나 했었어서 비교적 반가운 느낌이다.

이 인터넷에서 컴퓨터끼리 정보를 주고받는 프로토콜인 TCP/IP의 구조를
이해해서 어떻게 우리가 인터넷을 통해 컴퓨터와 연결되는지
차근차근 알아봐야 될 것 같다.


LAN, WAN

LAN (Local Area Network), WAN(Wide Area NetworK)의 약자로
말그대로 직역하자면 로컬 지역 네트워크와, 광범위한 지역 네트워크다.
이름에서 부터 차이를 느낄 수 있을 것이다.

image

위의 그림은 우리가 기본적으로 인터넷이
이렇게 연결되어 있다고 상상한다.

컴퓨터 - 랜선 - 라우터 까지 연결하면 우리집에서
인터넷을 사용할 수 있게 된다.

image

여기서 랜선은 라우터와 연결해주는 케이블이라고 생각하면된다.
나는 일하면서 TCP/IP 프로토콜 통신할 일이 많아서
랜선을 하두많이봐서 색순서까지 다외운상태다.

다시말해 라우터에 유선이든 무선이든 연결이 되어있어야 인터넷 사용이 가능하다.
이렇게 수많은 LAN들이 모여서 세계 네트워크를 구성하는 WAN을 구성하게된다.

Internetworking

우리가 말하는 인터넷은
네트워크끼리 연결하는 네트워크라는 의미의
인터네트워크에서 유래되었다.

이렇게 여러 네크워크를 연결하는 것을
Internetworking이라고 한다.

여기서 생각해볼 수 있는 것은
우리 집 네트워크가 고장나도 그로인해 발생하는 영향들이
우리 집 한에서만 발생하고 퍼지지 않는다는 점과
불필요한 통신이 네트워크 전체로 확산하지 않고
개별 네트워크 각 방침에 따라 관리가 가능한 장점이있다.

IP

우리가 장난으로 ip추적당했다 이런말들을 많이한다.
ip는 TCP/IP 구조에서 컴퓨터를 식별하기 위해 사용되는 주소이다.

image

위의 사진처럼 192.168.219.106 같은 형태이다.
컴퓨터나 휴대폰, 서버, 인터넷 라우터 등 네트워크 장비에
모두 IP주소가 할당되게 되어지고
이 IP주소로만 가지고 네트워크 상에서 송수신하는 것은 불가능하다.
각 기기의 제조사에서 처음부터 할당하는 고유 시리얼인 MAC주소를 IP주소와
조합해야만 네트워크를 통한 통신이 가능하다.

image

IPv4 주소 형식은 위에서 보여준 것 같 같다.

192.168.219.10 여기서
앞의 192.168.219 = network part고
뒤의 106 = host part이다.

여기서 총 4개의 옥텟으로 이루어져있고, 앞에서부터 1옥텟, 2옥텟 … 이렇게 부른다.
IPv4의 의미는 Internetl Protocol version 4의 줄임말이고
8비트덩어리가 4개 있는 것이다. 즉 0.0.0.0~255.255.255.255 숫자 조합으로 이루어지고
43억개의 서로의 다른 주소를 부여할 수 있다.

인터넷 보급률이 늘어남에따라 인구가 늘어나서 이를 보완하고자
IPv6가 나왔다고한다. 16비트씩 8부분으로 2^(128)개의 주소를 할당할 수있다.
엄청나게 많은 숫자이다

PORT

TCP와 UDP 둘다 포트 번호를 사용한다.
대상 IP기기의 특정 어플리케이션을 특정하는 번호로
대표적으로 스프링을 실행하면 port 8080을 할당 받게되는 것과 같다.

그래서 우리가 http://localhost:8080 으로 접속이 가능하고
localhost의 IP는 127.0.0.1이므로
http://127.0.0.1:8080 으로도 접속이 가능하다.

포트 번호는 0~65,353 까지 사용이 가능하고
몇가지 규약이 있다.

이름 범위 설명
Well-Known port 0~1023 시스템 사용 번호 (슈퍼유저 권한 필요)
Registered port 1024~49151 특정 프로토콜이나 어플리케이션에서 사용하는 번호
Dynamic port 49152~65535 어플리케이션에서 혹인 임시 사용번호

여기서 Well-Known port에서도 자주사용하는 포트가 있다.

       
Port 번호 프로토콜 이름 유형 설명
80 HTTP TCP 웹서버 접속
443 HTTPS TCP 웹서버 접속(SSL)
110 POP3 TCP 메일 읽기
25 SMTP TCP 메일 서버간 메일 전송
22 SSH TCP 컴퓨터 원격 로그인
53 DNS UDP DNS 질의
123 NTP TCP 시간 동기화

여기서 HTTP나 POP3같은 것은 많이들 보셨을 거다.
이미 정해진 포트 번호라도, 필요에 따라 자유롭게 사용이 가능하다.
왠만하면 Registered port를 이용해서 작업하자!


URL, DNS

URL

URL은 Uniform Resource Locator의 약자이다.
어떤 자원을 찾기위한 브라우저에서 사용되는 메커니즘이다.
인터넷상에서 HTML이나 이미지 등 리소스의 위치를 특정하기 위한 서식으로서
탄생하게 되었다.

이말은 즉슨 URL은 서버에서 제공되는 환경에 존재하는 파일의 위치를 뜻한다.

https://leejellan.tistory.com/
내블로그 주소를 예르들 leejellan.tistory.com 이라는 주소를 가르키는
서버의 기본폴더를 뜻하고 leejellan.tistory.com/1 이렇게 뒤에 경로가
추가되면 컴퓨터에서 폴더를 찾듯이 서버의 resource에 접근할 수 있는 것이다.

기본적으로는 보안이되어있어 직접접근이 가능하진 않다.

https://leejellan.tistory.com/manage/newpost/?type=post&returnURL

이렇게 내 블로그 주소를 기준이로 글쓰기작성하는 화면에서의 URL을 예로들면
https://leejellan.tistory.com/manage/newpost/?type=post&returnURL

https:// = :scheme
leejellan.tistory.com = :hosts
/manage/newpost = :url-path
?type=post&returnURL = :query

라고 URL에의 파트를 나눌 수 있다.

DNS

여기서 도메인이라는 얘기를 아마 들어봤을 텐데
예를들어 내 블로그 주소가 https://192.123.45.
이러한 주소가 있다고 가정을 했을 때
우리는 이이름만 보고 이사이트가 어떤 사이트인지
혹은 다시 접속하려할때 기억하기 매우 어려울 것이다.

여기서 https://leejellan.tistory.com 이렇게 도메인 이름이 바뀌게 되면
직관적이고 알아보기가 쉽다
이렇게 네트워크 상에 존재하는 PC들은 IP주소가 있고
이 IP 주소는 위에서 얘기했듯이 IPv4로 예를 들면
192.123.45.1 이런식으로 할당받게 된다.

image

우리는 이 주소를 도메인으로 바꾸기 위해
DNS(Domain Name System) 서비스를 이용하는데
DNS는 DNS서버에는 우리의 IP 주소가 넣어놓고
우리가 원하는 도메인 이름을 요청했을때, DNS에서 우리의
주소를 찾아서 해당하는 웹 서버로 요청을 전달하여
클라이언트와 서버가 통신할 수 있도로 해주는 역할을 하는 것이다.

도메인 이름에는 위 URL처럼 파트가 나눠진다.
https://www.google.co.kr/ 이라고 가정했을 때

host안에서
www = subdomain
google.co.kr = domain

이렇게 2가지로 나눠서 얘기한다 .


이렇게 오늘은 기본적인 네트워크의 기술들인
TCP/IP, IP, PORT, URL, DNS에 대해 간단히 알아봤다.
심도있게 공부하면 아마 끝도 없을 것 같다는 생각이 들긴한다.
내가 웹서버를 만들고 이용할 것이라면 당연히
거쳐야하는 과정이고 알아야하는 내용이라 생각해서 그런지
오늘 공부는 어려웠지만 재밌었다.

이후에 웹이랑 클라이언트-서버아키텍처
HTTP등 여러가지 공부를 더했었는데
주말을 이용해서 정리해보려고한다
오늘 공부는 여기서 끝!!


오늘의 커피량: ☕️ ☕️ ☕️ ☕️
오늘의 점심: 스팸, 짜장밥