개발놀이터

인터넷 네트워크 본문

CS 지식/HTTP 웹 기본 지식

인터넷 네트워크

마늘냄새폴폴 2021. 8. 17. 14:35

*인터넷 네트워크


*IP (인터넷 프로토콜) 역할
1. 지정한 IP 주소에 데이터 전달
2. 패킷이라는 통신 단위로 데이터 전달

처음에 내가 원하는 정보를 상대방에게 전달하고 싶으면 IP패킷이라는 곳에 출발IP주소 도착IP주소를 적고 안에 메시지를 적어 넣고 인터넷에 던진다. 그럼 인터넷에서
도착 IP주소를 갈 수 있는 곳을 서로 물어가며 전달이 된다.

IP프로토콜의 한계
1. 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
2. 비신뢰성 : 중간에 패킷이 사라지면? 패킷이 순서대로 안오면?
3. 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애클리케이션이 둘 이상이면?


*TCP
IP에서 생긴 한계점을 해결하기 위해 생겨난 개념이다.

IP패킷에선 출발지IP, 목적지IP, 기타등등을 가지고 메시지를 담는다. TCP패킷은 IP패킷 안에 담는 구조이고 구조적으로 보면 메시지를 TCP패킷이 감싸고 TCP패킷을 IP패킷이 
감싸는 구조이다. TCP패킷에는 출발지PORT, 목적지PORT, 전송제어, 순서, 검증정보 등의 정보가 담긴다. 

TCP 특징
1. 연결지향 3way handshake (연결이 됐나 안됐나를 확인하고 보낸다)
2. 데이터 전달 보증 (메시지가 누락이 되면 메시지를 못받았다고 인식할 수 있다)
3. 순서보장
4. 신뢰할 수 있는 프로토콜
5. 현재는 대부분 TCP를 사용

1. 연결지향 TCP 3way handshake (가상연결) = 이를 가상연결이라 하는 이유는 논리적으로만 연결이 된것이지 물리적으로 연결이 된 것은 아니기 때문
메시지를 클라이언트가 서버로 SYN을 보내고 (SYN : 접속요청 (싱크로나이즈의 줄임말) ) 서버도 클라이언트에 SYN+ACK를 보낸다. (ACK : 요청수락) 그럼 다시 클라이언트가
서버에 ACK를 보냄으로써 3번 정보를 보낸다. 이렇게 하면 클라이언트와 서버간 서로를 신뢰할 수 있게 된다. 이렇게 연결이 되고 나면 그제서야 데이터를 전송한다.
요즘은 기술의 발전으로 클라이언트가 마지막 서버에 ACK를 보낼때 데이터도 전송할 수 있다.

2. 데이터 전달 보증 
클라이언트가 서버에 데이터를 전송하면 서버는 클라이언트에게 데이터 잘 받았다고 또 전송함

3. 순서보장
패킷1, 2, 3 순서로 전송했다고 가정하고 서버에서 패킷1, 3, 2 순서로 받았다고 가정하면 서버는 클라이언트에게 패킷2부터 다시 보내라고 메시지를 보낸다.


*UDP 특징
1. 하얀 도화지에 비유
2. 연결지향 X
3. 데이터 전달 보증 X
4. 순서 보장 X
5. 데이터 전달 및 순서가 보장되지 않지만 단순하고 빠름
6. 정리 : IP와 거의 같다. +PORT+체크섬 정도만 추가, 애플리케이션에서 추가 작업 필요하다


*PORT
한번에 여러개의 서버와 통신해야 한다면 서버에서 클라이언트에 패킷이 여러개가 갈건데 이걸 어떻게 구분할것이냐

TCP프로토콜에 출발지 PORT와 도착지 PORT를 같이 보내기 때문에 서버딴에서는 어디서 온 패킷인지 바로 알 수 있고 다시 정보를 보낼 때도 출발지PORT를 같이 적어 보냈기
때문에 바로 보내줄 수 있다. IP는 아파트로 비유되고 PORT는 몇동몇호인지로 비유된다.


*DNS
IP의 단점은 기억하기가 어렵다. 또한 IP는 언제든지 바뀔수있다. 

이를 해결하기 위해 DNS(도메인 네임 시스템)이 생겨났다. DNS서버에 예를들어 google.com 의 IP가 200.200.200.2라면 클라이언트가 DNS서버에 google.com을 요청하면
응답으로 200.200.200.2의 IP를 응답해주는 것이다. 그렇게 응답받은 200.200.200.2로 서버에 접속한다.

'CS 지식 > HTTP 웹 기본 지식' 카테고리의 다른 글

HTTP 캐시와 조건부 동작  (0) 2021.08.17
HTTP 일반 헤더  (0) 2021.08.17
HTTP 상태코드  (0) 2021.08.17
HTTP 메서드  (0) 2021.08.17
HTTP 기본  (0) 2021.08.17