본문 바로가기
Network

[기초 Network #1] IP, TCP/UDP, DNS, URI, URL 그리고 전송과정

by qbinee 2022. 4. 16.
학교에서 컴퓨터 네트워크를 수강하였지만, 2학년때 어째서 배워야 할지도 모른 채 배워 부족한 부분을 많이 느껴 정리하고자한다.

 

해당 글은 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식  듣고 정리하였다.

 


컴퓨터는 어떻게 통신할까?

이는 너무 두리뭉실하다 . 사실 메세지 쏘면 알아서 내가 보내고픈 곳으로 보내고 res를 받고싶다.

 

그러나 세상에는 이런 보내는것에도 규약(Protocol)있다.

 

이것을터넷 프로토콜 이라고 한다. 어떻게 통신을 할지 규칙을 정해 놓은것이다.

 

규약은 스택구조로 이루어져 있다. 기능들의 한계점을 보완하고 과정들을 설명하기 편하게 계층으로 나눠놓을것이다.

 

강의에서는 4계층으로 설명한다.


터넷 프로토콜 ( Internet Protocol )의 구성

규약을 설정하기 위해 설명해야하는 구성들이 있다.

 

 

<과정>

  1. 프로그램이 보내고자 하는 메세지를 생성한다.
  2. Socket 라이브러리 이를 os ( ip / tcp ) 에 전달한다.
  3. TCP 확실한 전송을 위한 정보를 생성한다.
  4. IP가 3과정의 내용을 포함한 IP Address 담겨있는 패킷을 생성한다
  5. 이렇게 생성한 IP Packet lan 드라이버에 넘겨서 정보들이 집약되어있는 ip packet 이용하여 전달한다.

 

중요한것은  결국 IP Packet 이라는 이름으로 묶인 정보를 하나하나 파악하여 , 도착지까지 Packet을 넘긴다는 것이다.


IP

  •  IP Address

쉽게 생각하면 주소이다. 서버들이 자신의 위치를 알리는 주소

  • Packet

날리는 메세지는 통신 단위 데이터 패킷(Packet , Package + Bucket )이라고 한다.

 

구성

  • 출발지 IP
  • 목적지 IP
  • 기타 …

 

한계

  • 비연결성 - 연결을 해놓고 보내는게 아니라서 잃어버리거나 탈취당해도 모른다.)
  • 비신뢰성 - 이유 때문에 신뢰받지 못함. 또한 패킷을 나눠서 보내는 경우에 패킷의 순서가 섞여도 구분할 없다.
  • 프로그램 구분 불가 - 컴퓨터(서버) 내의 프로그램들은 어떻게 구분할것인지 모른다

 

IP의 전송의 한계를 보완하기 위하여 TCP있다.


TCP( Transmission Control Protocol )

제어 프로토콜이다.

한계에서 자꾸 패킷이 사라진다 ;; 이는 돈으로 생각하면 송금했다고 보냈는데 사라지면 큰일나지 않는가. 난리난다

이런 비신뢰적인 문제를 해결하기 위해서 TCP 아래 특징갖는다.

 

  • 연결 지향 - TCP 3 way handshake
  • 이터 전달 보증 - 데이터 전달이 것을 다시 알려줌
  • 순서 보장 - 순서 틀리면 다시 보내라고

 

3 way handshake ( 연결 지향 )

  • 무작정 패킷을 보내는것이 아니라, 일단 연결이 것을 확인한 후에 패킷을 전송한다.

과정

  1. Syn ( synchronized , 동기화 ) 전송하여 접속이 가능한지 확인
  2. 접속 가능시에는 SYN + ACK ( acknowledgement ) 을 전송
  3. 접속 가능하다는걸 받았다는 ACK 전송

같은 전송 제어 프로토콜로 UDP가 있다.

 

UDP(User Datagram Protocol)

TCP 무조건 전달할거야 !!!! 이거면 , UDP ,, 보내면 됬지,, 이정도만 확인해줄게? 하는 느낌이 있다. ( 그냥 내 느낌이다 )

  • 연결 지향 하지 않다. (3 way handshacke x)
  • 이터 전달 보증 x
  • 순서 보장 x

 

렇게 규약이 없는데 당연히 단순하고 빠르다는 장점 있다.

 

차이점으로는

  1. Port 정보 O
  2. Checksum O

 

이렇게 규약이 없어서 애플리케이션 계층에서 추가 작업이 필요한데, 요즘 자유로운 ? 개발자들 사이에서 요 추가작업이 인기라고 한다.


포트(PORT)

IP 아파트 도로명 주소라면, 포트는 /호수 이다.

같은 IP내에서 프로세스를 구분한다.

애플리케이션 계층에서의 대표적인 schema ( ex http, https, ftp, telnet)  포트번호가 지정되있다.

 


DNS

일반 사용자들은 내용 모른다. 대충 naver.com 치 네이버 들어가져 있으면 좋겠다

 

그래서 만든게 DNS 이다.

길고 복잡한 IP 기억하는 대신, naver.com을 치면 네이버 Ip로 맵핑 시켜주는 역할이다.


URL , URI, URN

URI  ( Uniform Resource Identifier)

    URL ( Uniform Resource Locator )

   ㄴ URN ( Uniform Resource Name )

 

으로 이루어 진다

 

URL

#fragment 서버에 전송하는 정보는 아니다.

Html 내 북마크에 사용한다.

 


그럼 위 내용을 모두 숙지했다고 했을때 !

위 기초적인 내용을 이용하여 유저가 URL을 치고 인터넷 프로토콜을 배운것을 기준으로 과정을 정리해 보자

 

<조건>

 

<과정>

  1. Http 요청 메세지 생성

 

2. Http 메세지 전송

3. Http 응답 메세지

 

<패킷 모양>

 

Reference 

- 모든 개발자를 위한 HTTP 웹 기본 지식 (김영한)