인터넷 통신

HUSII·2023년 1월 18일
0

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

인터넷은 복잡하다.
다양한 노드들로 구성되어있다.

그중에서 아무것도 없이, 내가 원하는 노드만을 골라 원하는 서버에 가는 것은 매우 힘들 것이다.

이를 해결해주기 위해 IP가 있다

IP(Internet Protocol)

각각의 컴퓨터에 IP 주소를 부여한다.
ex) 100.100.100.1 등등

클라이언트와 서버 모두 IP 주소를 가지고 있다.
지정한 IP 주소에 데이터를 전달한다.
패킷이라는 통신 단위로 데이터를 전달한다

IP 패킷에는 다양한 정보가 포함되어 있다.
ex) 출발지 IP, 목적지 IP, 기타 등등

IP 프로토콜의 한계

  • 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
  • 비신뢰성 - 중간에 패킷이 사라지거나, 패킷이 순서대로 오지않는다면?
  • 프로그램 구분 - 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면?

위의 문제를 해결하기 위해 Transport layer인 TCP와 UDP가 존재한다.

인터넷 프로토클 스택의 4계층

애플리케이션 계층 - HTTP, FTP
전송 계층 - TCP, UDP
인터넷 계층 - IP
네트워크 인터페이스 계층

애플리케이션 계층에서 서버에게 데이터 패킷을 보내면
아래로 가면서 데이터가 추가된다.

데이터 + TCP 정보, port 번호 + IP 번호 + ...

TCP

전송 제어 프로토콜(Transmission Control Protocol)

특징

  • 연결지향 - 3 way handshake
  • 데이터 전달 보증
  • 순서 보장
  • 신뢰할 수 있는 프로토콜

3 way handshake
1. 클라이언트가 서버에게 접속요청(SYN)을 보낸다.
2. 서버가 클라이언트에게 요청수락(ACK)과 접속요청(SYN)을 보낸다.
3. 클라이언트가 서버에게 요청수락(ACK)을 보낸다.

  • ACK와 함께 데이터 전송 가능

데이터 전달 보증
클라가 서버에게 데이터를 전송하면, 서버는 데이터를 잘 받았다고 알려준다.(ACK)

순서 보장
클라가 데이터 패킷을 123순서로 보냈는데, 서버가 132로 받았다면, 2번 패킷부터 다시 보내라고 알려준다.


UDP

사용자 데이터그램 프로토콜(User Datagram Protocol)

특징

  • 연결지향 - 3 way handshake x
  • 데이터 전달 보증 x
  • 순서 보장 x
  • 단순하고 빠름
  • IP와 거의 같다 + PORT + 체크섬

PORT

한 서버에서 둘 이상의 클라가 연결되어있다면?

서버는 동시에 둘 이상의 데이터를 받을 수 없다.
그래서 PORT 번호를 활용한다.
PORT - 같은 IP 내에서 프로세스를 구분한다.

포트 번호
0~65535 할당 가능
0~1023 잘 알려진 포트, 사용하지 않는 것이 좋음
FTP - 20, 21
HTTP - 80
HTTPS - 443

DNS

원하는 서버에 데이터 패킷을 보내야 하는데, 서버의 IP를 다 기억하기는 어렵다.
그리고 IP는 변경될 수 있다.

이를 해결하기 위한게 DNS

도메인 네임 시스템 (Domain Name System)
도메인 명이 IP 주소로 변경?된다.
ex) google.com을 입력하면 DNS 서버에서 구글의 IP 주소인 200.200.200.2를 클라에게 보낸다. 이 IP 주소를 서버에게 보낸다.

profile
공부하다가 생긴 궁금한 것들을 정리하는 공간

0개의 댓글