Search
Duplicate
📒

[Network Study] xx.x 인터넷 네트워크(인터넷 통신, IP, TCP/UDP, Port)

상태
완료
수업
Network Study
주제
기본개념
4 more properties
참고

인터넷 통신

NOTE
인터넷에서 컴퓨터 둘은 어떻게 통신하는가?
만약, 클라이언트와 서버가 가까이 있으면 케이블로 2PC를 연결하여 통신이 가능
하지만 클라이언트와 거리가 멀면 인터넷 망을 통해서 데이터를 보내야 한다.
클라이언트(출발지) 에서 인터넷 망 내부의 수많은 중간 노드(서버)를 거쳐 목적지 서버에 전달해야 하는데, 도대체 어떤 규칙으로 수많은 노드들을 거쳐 메시지를 전달하는가?
이 개념을 위해 IP를 학습한다

IP(인터넷 프로토콜)

NOTE
인터넷 망을 거쳐 원하는 서버로 요청(Request)또는 메시지(message)를 보내고자 하는 경우 IP주소가 있어야한다.
이 IP 주소는 client와 server가 모두 부여받야아 한다.
ex) client(100.100.100.1), server(200.200.200.1)

IP 역할

지정한 IP에 패킷(Packet)이라는 단위로 데이터를 전달한다.
전송 데이터(보낼 메시지)출발지 IP(클라이언트 IP), 목적지 IP(서버 IP)등을 묶어서 패킷으로 만든이후 보낸다.

IP를 이용해서 메세지 전달

NOTE

1. IP 주소 부여

클라이언트(100.100.100.1) - 서버(200.200.200.2)

2. 클라이언트 패킷 전달

노드를 거쳐서 클라이언트 → 서버로 데이터가 전송된다.

3. 서버 패킷 전달

무사히 서버에 도착했다면, 서버측에서 전송을 받았다는 응답을 보내준다.

IP 프로토콜의 한계

NOTE

1. 비연결성 (서버 상태 알 수 없음)

클라이언트(출발지)에서 패킷을 전송하려고 할 때, 대상 서버(목적지)의 상태는 알 수 없다. ⇒ 그래서 항상 패킷을 보내게 되는 문제가 존재함

2. 비신뢰성 (패킷 소실)

중간 노드에 문제가 생기면, 패킷이 유실되는 문제가 발생

3. 비신뢰성 (패킷 전달 순서 문제 발생)

패킷의 용량이 매우 클 때, 패킷을 분리해서 보내게 된다. ⇒ 모두 같은 경로로 이동하는 것이 아니기에, 전달 순서가 보장되지 않는다.

TCP, UDP

NOTE
앞서 보았던 IP 프로토콜의 한계점들을 해결해 주는 것이 바로 TCP 이다
UDP는 이런 문제들을 해결해주지는 않지만, 도움이 되는 protocol

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

NOTE
TCP와 UDP는 프로토콜 상위의 전송 계층 위치에서 IP 프로토콜을 보완해주는 개념
각 프로토콜 계층에서 처리하는 방식 (각각 프로토콜 계층을 거치면서 필요한 정보를 덧붙인다.)
1.
어플리케이션 → OS (SOCKET 라이브러리 사용)
2.
OS → NIC ( LAN 드라이버 사용)

패킷 정보

NOTE

IP 패킷 정보

출발지 IP + 목적지 IP + 기타 ..

TCP + IP 패킷 정보

TCP의 정보가 추가되면서 기존 IP의 한계점이 해결되었다! ⇒ 전송 제어/순서 , 검증 정보 등 추가

TCP(전송 제어 프로토콜) 특징

NOTE
TCP는 IP 프로토콜이 보장하지 못하던 것들을 보장할 수 있게 된다!
연결 지향 (TCP 3 way handshake)
가상 연결 (개념적으로만 연결된 상태, 물리적 X)
물리적 연결PC와 PC를 직접 선으로 연결한 경우
논리적 연결클라이언트, 서버 사이에 무수히 많은 노드들을 거쳐 연결
데이터 전달 보증
순서 보장
신뢰할 수 있는 프로토콜

TCP 3 way handshake

NOTE
3번 악수하는거 같아 붙여진 이름
1.
클라이언트 → 서버 , SYN을 보낸다
2.
서버 SYN 수신, 서버 → 클라이언트 접속을 요청하는 SYN, ACK를 보낸다.
3.
클라이언트 SYN수신, 클라이언트 → 서버 ACK를 보낸다.
3 way handshake 후, 서로 연결되었다고 판단한다.
연결은 논리적, 물리적이 아니다!
4.
클라이언트 → 서버 데이터 전송

TCP 3 way handshake 장점

NOTE

IP 패킷 정보

클라이언트 → 서버 수신이 성공하여부를 보내준다.

IP 패킷 정보

순서가 잘못된 경우, 해당 패킷을 모두 버리고 다시 전송하라고 한다.

UDP(사용자 데이터그램 프로토콜) 특징

NOTE
TCP와 달리 비연결 지향이며 데이터 순서와 보증이 이루어지지 않는다!
단순하고, 빠르다 (연결 없이 데이터를 주고 받기 때문)
IP방식과 거의 유사하다 (Port, checksum 정도만 추가됨)
HTTP 3.0에서 UDP 기반의 QUIC를 사용한다.

PORT

NOTE
현재 클라이언트가 한번에 2개 이상의 서버에 연결해야 한다면?
하나의 클라이언트에 게임도 하고 화상통화도 하고.. 연결을 많이해야함 ⇒ 200.200.200.2의 게임과 화상통화는 어떻게 구분하지..?
같은 IP 내에서 프로세스 구분할 수 있게됨! ⇒ 200.200.200.2의 게임은 8090, 화상통화는 10016
서버가 클라이언트로 패킷을 보내려면 클라이언트 IP로 패킷을 보낸다.
IP만 사용하면 받은 패킷이 어떤 요청의 패킷인지 알 수 없다.
⇒ 구분하기위해 Port를 사용한다!
TCP/IP 패킷정보에 그래서 Port가 추가됨

대표적인 Port

0 ~ 65535 범위 내 할당가능
0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋다
FTP - 20, 21
TELNET - 23
HTTP - 80
HTTPS - 443

DNS(Domain Name Server)

NOTE
기존의 IP를 읽기 좋은 도메인 명으로 변환시켜주는 것!
DNS 서버는 일종의 전화번호부라 생각하면 된다.
1.
DNS 서버에 도메인 명에 대한 IP주소를 등록해둔다
2.
클라이언트가 DNS 서버에 도메인 명에 대한 IP를 요청한다
3.
DNS 서버는 해당 도메인 명에 대한 IP주소를 클라이언트에게 전달한다
4.
클라이언트는 해당 IP주소로 서버에 접근한다
DNS를 사용하면 IP가 기억하기 어렵고, 변경될 수 있는 문제를 해결해준다.