📘 인터넷 통신
- 인터넷에서 컴퓨터 둘은 어떻게 통신할까? 클라이언트 - 인터넷 - 서버
- 클라이언트(client) : 서버에 의뢰를 하는 웹 브라우저 등
- 클라이언트에서 서버까지 일련의 흐름을 결정하고 있는 것을 웹에서는 HTTP라는 불리는 프로토콜이다.
- 웹은 HTTP라는 약속을 사용한 통신으로 이루어진다.
📘 TCP/IP 4 Layer
- TCP/IP는 현재 수많은 프로그램들이 인터넷으로 통신하는데 가장 기반이 있는 프로토콜로 인터넷과 관련된 프로토콜을 모은 것이다
- 애플리케이션 계층, 트랜스포트 계층, 네트워크 계층, 링크계층으로 구분한다.

💡 왜 TCP/IP는 계층화되어있을까?
- 계층화되어 있으면 사양이 변경된 경우 해당 계층만 바꾸면 된다.
- 계층화하면 각 층에 자신이 담당하는 부분만 고려하면된다.
- ex) 전송 계층에서 TCP -> UDP로 변경된다고 해서 웹브라우저를 설치할 필요가 없다.
📘 IP(Internet Protocol)

- IP 인터넷 프로토콜 역할
- 지정한 IP주소에 데이터를 전달한다
- 패킷(Packet)이라는 통신 단위로 데이터 전달한다.
💡 패킷이란?
- pack + bucket => 우체국에서는 화물을 적당한 덩어리로 나눠 행선지를 표시하는 꼬리표를 붙이는데, 이러한 방식을 데이터 통신에 접목한 것이다.
- 정보를 보낼 때 특정한 형태를 맞추어 보낸다는 것이다. 컴퓨터 간에 데이터를 주고 받을 때 네트워크를 통해서 전송되는 데이터 조각이다.
- IP 패킷 정보
- 출발지 IP와 목적지 IP만 적은채로 보낸다.(주황색 : IP 패킷)
- 요청할 때와 응답할 때 서로 다른 곳으로 전달 될 수도 있다.(망이 복잡함)
- IP 주소는 변경 가능하다.
- IP프로토콜의 한계
- 비연결성 : 패킷을 받을 대상이 없어도 패킷 전송
- 비신뢰성 : 패킷 손실되거나 순서대로 안와도 해결X
=> 1500바이트가 넘으면 한번에 많은 데이터를 보내기 부담스러우니까 나눠서 보냄
(1. Hello 2. World => 1.World 2. Hello), 패킷들이 중간에 다른 노드로 이동해서 순서가 변경될 수도 있다.
- 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이라면? (1개의 IP로 노래도 듣고 채팅도 한다면?)
💡 패킷이란?
전송하는 데이터의 최소단위
📘 TCP, UDP

🔍 TCP/IP 패킷 정보
- 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보 추가
🔍 TCP특징(전송제어 프로토콜)
- 연결지향 -TCP3 3way handshake(가상연결)
- SYN : 접속 요청(클라이언트 -> 서버)
- SYN+ACK : 접속 요청 + 요청수락(서버 -> 클라이언트)
- ACK : 요청 수락(클라이언트 -> 서버)
- 데이터 전송
- 데이터 전달 보증
클라이언트 -> 서버 : 1. 데이터 전송
서버 -> 클라이언트 : 2. 데이터 잘 받았음
- 순서 보장
- 패킷1, 패킷2, 패킷3 순서로 전송
- 패킷1, 패킷3, 패킷2 순서로 도착
- 패킷 2부터 다시 보내
💡 출발지 PORT, 목적지 PORT, 전송제어, 순서, 검증 정보 추가되었기 떄문에 가능함
- 신뢰할 수 있는 프로토콜
- 현재 대부분 TCP 사용
- 신뢰성 있는 바이트 스트림 서비스를 제공
💡 신뢰성있는 바이트 스트림 서비스란?
신뢰성 있는 서비스 : 상대방에게 보내는 서비스
바이트 스트림 서비스 : 용량이 큰 데이터를 보내기 쉽게 TCP세그먼트라고 불리는 단위 패킷으로 작게 분해하여 관리 하는 것
📘 UDP
- 사용자 데이터그램 프로토콜(User Datagram Protocol)
- IP와 기능은 같다 + PORT + 체크섬 정도만 추가
- 애플리케이션에서 추가 작업이 필요함(더 최적화 하기위해서는 TCP를 수정하기보단 UDP로 해결)
- 장점 : 웹브라우저에서 HTTP통신할때 TCP 3way handshaking 할 때 시간이 너무 오래걸리는 문제를 해결해줌
💡 PORT : 하나의 IP로 음악 듣고, 영화 볼때 이를 구분할 때 쓰는것이다.
📘 PORT
- 한번에 둘 이상 연결해야하면?
- TCP/IP 패킷정보에 출발지 PORT, 목적지 PORT가 있음
- 같은 IP내에서 프로세스 구분
- ex) 포트번호 : 게임 8090, 화상통화 21000, 웹브라우저 10010
- 0~65535 할당 가능
- 0~1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20,21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
📘 DNS(Domain Name System)
- DNS는 도메인명에서 IP주소를 조사하거나 반대로 IP주소로부터 도메인명을 조사하는 서비스를 제공하고 있다.
<IP의 단점>
- IP는 기억하기 어렵다.
- IP는 변경될 수 있다.
=> 도메인 명을 IP주소로 변환
[DNS 서버]
도메인명 | IP
google.com | 200.200.200.2
aaa.com | 210.210.210.3
- 클라이언트가 google.com 도메인명 요청
- DNS서버가 응답 : 200.200.200.2
- 클라이언트가 서버로 접속