♪ 학습 내용
IP / TCP / UDP / PORT / DNS
컴퓨터는 다음과 같이 복잡한 인터넷 망을 이용하여 통신한다.
이와 관련된 개념들
* IP(인터넷 프로토콜)
IP는 IP 주소를 부여해준다. like) 100.100.100.1
IP는 그렇게 지정된 주소에 데이터를 전달.
이때의 단위는 패킷이다.
패킷이란?
패키지(수하물) + 버킷(덩어리) 의 합성어로 전송할 것들을 모아놓은?정도.
IP 패킷에는 데이터와 함께 출발지 IP와 목적지IP 등 기타 정보가 담겨있다.
클라이언트에서 서버로, 서버에서 클라이언트로 정보를 주고 받을 때 이 IP패킷을 주고 받는 것.
이러한 IP 프로토콜은 여러 한계를 지니고 있다.
1. 주소를 상대로 데이터를 전송하기 때문에, 대상 서비스가 불능인 경우에도 패킷을 전송한다.
ex) 상대방의 집 주소가 바뀌었는데, 모르고 택배 보내는 사람은 주소만 있으면 보낼 수 있는 것과 같음
2. 인터넷 망을 통해 전달되는 과정에서 패킷이 소실되어도 알 수가 없다.
3. 순서있는 여러 패킷을 보낼때 각 패킷들이 다른 노드를 탈 수 있고, 그로 인해 순서가 바뀌어 도착할 수 있다.
이 경우에 결과가 기존 의도와 다르게 됨.
4. 여러 애플리케이션에서 같은 IP를 사용 (뒤의 PORT 개념에서 다룬다)
* TCP(Transmission Control Protocol)
TCP 프로토콜은 전송 제어 프로토콜로, 위의 IP 프로토콜의 문제를 해결해 줄 수 있다.
TCP는 연결 지향 프로토콜로, 3-way handshake 방식으로 상대와 연결이 됐나를 우선 확인한다.
이를 통해 대상 서비스가 불능인 경우를 구분할 수 있다.
3 way handshake 에서는 클라이언트가 서버와 SYN(접속요청)과 ACK(요청수락)를 주고받는다.
클라이언트가 SYN을 서버로, 서버가 확인했으면 SYN과 ACK를 다시 클라이언트로,
그리고 클라이언트도 확인했으면 다시 서버로 ACK를 보낸다.
이렇게 3번의 확인절차가 끝나면 전송할 데이터를 서버로 전송!!
다만 3번 왔다갔다 하기 때문에 그만큼 비교적 느리다.
외에 데이터를 전송했을 경우에 서버로부터 데이터를 잘 받았다는 메시지를 받기 때문에
메세지 전달여부를 확인 가능하다. 데이터 소실 x !!
+ 전달 과정에서 순서가 변경되었다면 서버로부터 다시 보내라는 요청 받는다. 순서보장!!
* UDP(User Datagram Protocol)
UDP는 TCP와 다르게 기능이 거의 없다.
TCP는 연결확인도, 소실보증도, 순서보장도 됐지만 UDP는 그렇지 않다.
다만 빠르다.
이렇게만 보면 앞에서 배운 인터넷 프로토콜 IP와 다를게 없다.
하지만 IP와는 다른점. ( PORT 와 체크섬 )
체크섬은 네트워크를 통해 전송된 데이터의 값이 변경되었는지를 검사하는 값.(무결성)
(https://limjunho.github.io/2021/06/05/UDP-cksum.html)
* PORT
여태까지는 출발지와 목적지가 하나씩이었다.
하지만 내가 여러 애플리케이션(게임, 화상통화, 웹 브라우저) 등등을 실행하고 있다면??
내 IP로 패킷들이 오갈때 어디서 쓰이는 패킷인지 구분할 필요가 있다.
이를 위한 것이 바로 PORT
PORT는 같은 IP 내에서 프로세스를 구분!
IP는 목적지 서버를 찾는 것이고, PORT는 그 목적지 서버 내에서 돌아가는 애플리케이션을 구분하여 찾는 것.
IP는 아파트, PORT는 동/호수로 이해하면 쉽다
그렇기 때문에 기존 IP 패킷에 PORT 정보를 위해 TCP 패킷이 실려야함
추가로 TCP 의 특성(순서,검증,연결지향)을 위한 정보들이 TCP 패킷에 담겨있는 것도 확인 가능!
- PORT는 0~65535 로 할당 가능
- 0~1023은 잘알려진 포트로 사용하지 않음을 권장.
like ( HTTP - 80 , HTTPS 443 )
* DNS(Domain Name System)
아이피는 기억하기 어렵고 변경되기도 쉽다.
이러한 문제를 해결할 수 있는 것이 바로 DNS
클라이언트가 DNS 서버에 도메인 명을 넘기면 해당 서버에서 그에 맞는 IP주소를 응답해주고
클라이언트가 해당 IP에 접속.
이러면 도메인 명만 알고 있어도 IP를 쉽게 얻을 수 있다.
♪ 다음 학습 내용
URI 와 웹브라우저 요청
'Dev > HTTP' 카테고리의 다른 글
[HTTP] HTTP 상태코드 (0) | 2022.12.27 |
---|---|
[HTTP] HTTP 메서드 활용 (0) | 2022.12.25 |
[HTTP] HTTP 메서드 (0) | 2022.12.25 |
[HTTP] HTTP 기본 (0) | 2022.12.23 |
[HTTP] URI 와 웹의 흐름 (0) | 2022.12.21 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!