🔎 IP(인터넷 프로토콜)
두 컴퓨터가 통신하기 위해 각 컴퓨터에는 IP주소가 부여된다.
IP(인터넷 프로토콜)의 역할은
- 지정한 IP주소(IP Address)에 데이터 전달
- 패킷(Packet)이라는 통신 단위로 데이터 전달
이고, IP패킷에는 출발지IP, 목적지IP, 전송 데이터, 등등 이 있다.
하지만 IP 프로토콜은 한계가 존재한다.
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성
- 중간에 패킷이 사라지거나
- 패킷 용량이 너무 커서(일반적으로 1500byte가 넘으면 분리) 끊어서 전송하게 되었을 때, 그 순서가 보장되지 않음 -> 인터넷 상의 서로 다른 노드를 타고 이동할 수 있기 때문에
- 프로그램 구분
- 같은 IP를 사용하는 서버에서 여러 프로그램을 통해 다른 서버와 통신하고 있다면 이를 구분하기 힘들다
=> 이를 보완하기 위해 나온 전송 제어 프로토콜 (Transmissio Control Protocol)로 TCP, UDP 그리고 PORT가 있다.
🔎 TCP, UDP
![](https://velog.velcdn.com/images/jaehyeon23/post/fcd0952d-2500-4a03-b959-c7ac80ac8d05/image.png)
- 애플리케이션 계층: 애플리케이션에서 전송할 데이터를 Socket을 통해 OS에 전달
- 전송 계층: TCP 정보 생성 후 IP 프로토콜 전달 -> 출발지 PORT, 목적지 PORT, 전송 제어,
순서
, 검증 정보, ...
- 인터넷 계층: 출발지 IP, 목적지 IP, 등등 추가
- 네트워크 인터페이스 계층: 해당 정보를 전송
📌 TCP 특징
-> 전송 제어 프로토콜(Transmission Control Protocl)
- 연결 지향: TCP 3way handshake(가상 연결)
- 서로 간의 IP주소가 연결되어 있는지 확인 (실제 WireShark를 통해 확인 가능)
- 데이터 전달 보증
- 데이터 전송 후 서버에서 전송 상태를 다시 보내줌
- 순서 보장
- 데이터 전송 순서가 맞지 않으면, 맞지 않는 패킷부터 다시 보내라고 클라이언트에 요청
(서버에서 순서를 맞출수도 있지만, 일반적으로 다시 보내라고 한다고 함)
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
![](https://velog.velcdn.com/images/jaehyeon23/post/3e2ea886-e8c6-442a-968a-11922cfae3c3/image.png)
![](https://velog.velcdn.com/images/jaehyeon23/post/aa39e84d-2326-4756-b91a-e9a1110037a1/image.png)
![](https://velog.velcdn.com/images/jaehyeon23/post/8f4c5d5e-7e84-4b63-a58b-f64ab5ded462/image.png)
📌 UDP 특징
-> 사용자 데이터그램 프로토콜(User Datagram Protocol)
- 하얀 도화지에 비유(기능이 거의 없음)
- 연결 지향 (TCP 3 way handshake x)
- 데이터 전달 보증 x
- 순서 보장 x
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- 주로 영상이나 이미지와 같이 일부 데이터가 소실되어도 미치는 영향이 작을 때 사용됨
=> IP와 거의 같고, PORT와 체크섬 정도만 추가됨, 애플리케이션 단에서 추가 작업이 필요
🔎 PORT
-> 같은 IP내에서 프로세스를 구분하는데 사용
![](https://velog.velcdn.com/images/jaehyeon23/post/c2f724e6-9a77-402b-ae62-98bda94c1a93/image.png)
예를 들어, 클라이언트가 하나의 서버에 동시에 두 개 이상의 연결이 되어 있다면, 해당 연결을 구분할 수 있어야 한다.
- PORT는 전송계층(TCP, UDP)에 명시됨
- 0 ~ 65535 할당 가능, 0 ~ 1023 은 잘 알려진 포트(Well-known port)
- FNP: 20~21
- TELNET: 23
- HTTP: 80
- HTTPS: 443
=> 비유하자면 IP주소가 아파트라면, PORT는 각각의 호수와 같다.
🔎 DNS
-> Domain Name System
![](https://velog.velcdn.com/images/jaehyeon23/post/b5fd6217-9a9f-4b3a-b4fe-bb175fce9be0/image.png)
- 인터넷 상에서 IP 주소가 아닌 도메인명(google.com)으로 접속할 수 있도록 하는 시스템
- DNS 서버에 해당하는 도메인명이 있다면 응답으로 해당 IP주소를 응답해주고 해당 IP주소에 접속