BE/HTTP

[HTTP]인터넷통신, IP,TCP,UDP,PORT,DNS란?

mandelina 2022. 3. 29. 18:06

 ✔️인터넷 통신

 

인터넷에서 컴퓨터 둘은 어떻게 통신할까?

-  클라이언트와 서버가 통신 할때 중간에 인터넷이 존재 , 이 인터넷망은 굉장히 복잡하다. 

   이 경우 통신 메시지가 어떻게 서로에게 안전하게 넘어갈까?

 


 ✔️IP

클라이언트 ➜ 인터넷 ➜  서버  로 전송하는 과정

 

1. 클라이언트에서 지정한 ip 주소(서버주소)에 메시지를 전달한다. (패킷단위로 전송)

 

이때 그냥 메시지를 보내는것이 아니라 출발지ip , 도착지ip , ... 의 내용을 넣고 패킷을 만든 다음 전송한다.

 

2. 그러면 인터넷 상의 노드끼리 도착치 ip를 찾아가서 도착지에 데이터 전송을 완료!

 

3. 여기서 끝나지 않고, 데이터를 잘받았다고 다시 서버에서 클라이언트에게 잘받았다고 ip패킷을 전달 

 

 

1번 : 요청(request) / 3번: 응답(response)

 


IP프로토콜의 한계

비연결성 / 비신뢰성 / 프로그램 구

 

비연결성 :  받을 대상이 없거나 서비스 불능이라면?

 

비신뢰성 : 중간에 패킷이 사라지거나 순서가 뒤죽박죽으로 온다면?

               (메시지가 너무 크면 끊어서 보내는 경우가 있음 ⟹ 이때 순서 바뀌면 . . .? )

 

프로그램구분 : 같은 ip를 사용하는 서버에서 애플리케이션이 둘이상이면? (게임을하면서 음악도 들으면?)

 

 


 

 

 ✔️ TCP , UDP를 들어가기에 앞서 , 인터넷 프로토콜 스펙 계층

출처 : 모든 개발자들을 위한  HTTP 웹기초 / 김영한님 자료중

 

 

애플리케이션계층 OS계층 애플리케이션계층 

 

 

 

 ✔️TCP , UDP

TCPIP의 한계점보안할수 있다.

 

메시지를 생성  TCP정보 생성,메시지데이터에 포함   IP패킷생성 , TCP데이터에 포함한 결과

 

출처 : 모든 개발자들을 위한  HTTP 웹기초 / 김영한님 자료중

 

 

 TCP 특징

 

〰️연결지향  :  TCP 3way handshake (연결을 해야 메시지를 보낼수 있다.)

 

-TCP 3way handshake 과정

 

1. 클라이언트에서 서버로 SYN 보냄

2. 서버에서 클라이언트로 SYN+ACK 보냄

3. 클라이언트에서 서버로 ACK 보냄

4. 서로 신뢰 했으니 클라이언트에서 서버로 데이터 전송!

 

* BUT 진짜 물리적 연결이 된것이 아닌 가상연결이 된것임 *

 

SYN : 접속요청  ACK : 요청수락 (요즘엔 최적화가 되어서 함께 데이터 전송가능)


 

〰️데이터 전달 보증 :  패킷이 누락되면 알 수 있음

 

〰️순서보장 : 순서 안맞으면 다시 보내라고 요청

 

〰️신뢰할 수 있는 프로토콜

 

〰️현재는 대부분 TCP 사용

 

 

UDP 특징

〰️ 기능이 거의 없음

〰️ IP와 거의 같지만 PORT , 체크섬 이 추가됨

 

PORT? 하나의 IP에 여러 애플리케이션을 사용할때 구분해주는 역할

EX) 게임과 음악을 동시에 사용할때 , 어떤게 게임용인지,음악용패킷인지 구분해준다.

체크섬? 메세지를 검증해주는 데이터

 

〰️ 그럼 왜쓰냐 ?

  TCP는 다 좋지만 전송속도가 느려질수 있고, 데이터 양이 많아진다.

  더 최적화 할수 있을것 같으면  UDP로 사용해서 내가 원하는것을 만들 수 있다.

 

 


 

 

 ✔️PORT

클라이언트에서 한번에 둘 이상의 서버와 연결할때 구분하려고 사용!

 

EX)    내가 (클라이언트) 게임(8090)하면서 화상통화(21000)를 한다면? 

          서버에서 게임(11220),화상통화(32202)로 대응하여 응답 후 요청

 

IP아파트라면 PORT 동,호수이다!

 

0~65535 할당 가능한 범위
0~1023 잘알려진 포트 (사용하지 않는것이 좋다.)

 

대표적인 포트

 

- FTP : 20 , 21

- TELNET : 23

- HTTP : 80

- HTTPS : 443

 

 ✔️DNS

IP의단점

〰️ 기억하기 어렵다

〰️ 변경 될 수 있다.

 

 

이 단점때문에 DNS 사용!

 

Domain Name System (DNS)

- 도메인 명을 IP 주소로 변환

- 전화번호부와 같다.

 

EX)

 

DNS서버  :   도메인명 : google.com /  ip : 200.200.200.2 

                                               .

                                               .

 

주소록 처럼 도메인명과 IP주소가 있다!

 

 


🍒정리

IP의 한계점을 극복하기 위해 TCP도입 

UDP는 IP와 비슷하지만 PORT추가 , 필요하면 기능확장가능

PORT는 같은 IP안에서 동작하는 애플리케이션을 구분하기 위해 사용

DNS는 변경될 수 있고 외우기 힘든 IP를 대신해서 사용

 

 

 

 

 

* 모든 개발자를 위한 HTTP 웹 기본지식 강의를 참고하여 작성했습니다. *