1. TCP와 UDP
1) TCP(Transmission Control Protocol)
- 특징 : 접속형, 신뢰형, 흐름 제어, 혼잡 제어, 바이트 스트림 통신
- 플래그 비트 표
플래그 | 의미 |
URG | 긴급 포인터가 있음을 표시 |
ACK | 확인 응답번호가 기술돼 있음을 표시 |
PSH | 데이터를 가능한 빨리 응용계층에 보내야 함을 표시 |
RST | 연결을 재설정 하기를 원함을 표시 |
SYN | 연결을 초기화하기 위해 순서번호 동기화 |
FIN | 송신측이 데이터의 전송을 종료 |
※ tcp 헤더 포맷
2) TCP 연결 방식
① TCP 연결 설정
- 능동적 열림 : 클라이언트는 서버가 열어 놓은 포트로 TCP 연결 요청, SYN을 보내는 쪽
- 수동적 열림 : 서버는 네트워크 응용을 수행하기 위해 정해진 포트를 열고 클라이언트의 요청을 기다림, SYN 메시지를 수신하는 쪽
- Three-way Handshake를 통해서 TCP 연결
② TCP 연결 종료
- Four-way Handshake를 통해서 TCP 연결 종료
※ Three-way Handshake & Four-way Handshake
3) UDP(User Datagram Protocol)
- 특징 : 비연결형, 비상태정보, 경량의 오버헤드, 비정규적인 송신률, 최선의 서비스
※ UDP 헤더 포맷
4) TCP와 UDP의 차이점
서비스 | TCP | UDP |
신뢰성 | - 패킷이 목적지까지 도달했는지 확인 - 패킷이 도달할 때마다 ACK를 수신 - 신뢰성 있는 프로토콜 |
- ACK를 사용하지 않음 - 패킷이 그들의 목적지에 도달되는 것을 보장하지 않음 - 신뢰성 없는 프로토콜 |
연결 | - 연결 지향적 - 핸드쉐이킹 과정 수행 |
- 비연결지향적 |
패킷 순서 | - 패킷 내에 순서 번호 사용 | X |
혼잡 제어 | O | X |
용도 | - 신뢰성 있는 전송 | - 스트리밍 비디오와 브로드캐스트 등 실시간 전송 |
속도의 오버헤드 | - 상당한 양의 자원을 사용하며 UDP보다 느림 | - 더 적은 자원을 사용하고 TCP보다 빠름 |
2. Telnet, SSH
1) Telnet
- 원격지의 컴퓨터를 인터넷을 통해 접속하여 자신의 컴퓨터처럼 사용할 수 있는 원격 접속 서비스
- 원격 컴퓨터를 이용할 수 있는 사용자 계정이 필요
- TCP 포트 : 23번
- 원격 접속 후 통신 시 바이트스트림 형식으로 데이터를 주고받고, 데이터를 암호화되지 않아 정보가 노출될 가능성이 큼
2) SSH (Secure SHell)
- 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일 복사도 가능한 응용 프로그램
- TCP 포트 : 22번
- 다른 컴퓨터와 통신 시 암호화 기법을 사용하기 때문에 안전한 통신 기능이 제공됨
3. DNS
1) DNS(Domain Name System)
- 웹사이트 접속 시 외우기 어려운 IP 주소 대신 사용하는 도메인 이름
- 입력한 도메인을 실제 네트워크 상에서 사용하는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 일련의 과정
2) DNS 구성 요소
① 도메인 네임 스페이스(Domain Name Space)
- 도메인 네임 스페이스라는 규칙으로 도메인 이름 저장 분산
② 네임 서버(Name Server) : 권한 있는 DNS 서버
- 해당 도메인 이름의 IP 주소를 찾음
③ 리졸버(Resolver) : 권한 없는 DNS 서버
- DNS 클라이언트 요청을 네임 서버로 전달하고 찾은 정보를 클라이언트에게 제공하는 기능 수행
3) DNS 동작 방식
① 도메인 주소 naver.com 입력 시 도메인 주소들을 가지고 있는 DNS 서버에 접속
② 서버에 접속한 도메인과 연결된 IP 정보 (223.130.195.95)를 확인 후 IP를 사용자 PC에 전달
③ 사용자 PC는 전달받은 서버의 IP 주소로 접속
④ 서버의 IP로 연결된 브라우저에 서버의 내용(홈페이지)을 출력
위와 같이 잘 접속되는 것을 확인할 수 있다.
4. 공인 IP, 사설 IP
1) 공인 IP
- 사용자의 로컬 네트워크를 식별하기 위해 ISP(Internet Service Provider)가 제공하는 IP 주소
- 공용 IP 주소, 즉 외부에 공개되어 있는 IP 주소
- 공인 IP는 전세계에서 유일한 IP 주소를 갖게 됨
- 인터넷에 연결된 다른 PC로부터의 접근 가능 → 방화벽 등의 보안 프로그램 설치 필요
2) 사설 IP
- 일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소
- 로컬 IP, 가상 IP라고도 함
- IPv4의 주소 부족으로 인해 서브넷팅된 IP로 라우터에 의해 로컬 네트워크 상의 PC나 장치에 할당
- 하나의 네트워크 안에서 유일
- 외부 접근 불가능
5. 포트포워딩, 외부포트, 내부포트
1) 포트포워딩
- 외부의 기기에는 고정된 IP만 전달하고, 외부 기기가 내부에 접근할 수 있도록 내부의 공유기 관리자에서 설정하는 과정
- 내부 컴퓨터에 접근하려면 특정 포트를 열어줘야 함
- 고유 IP에 특정 포트를 부여해줌으로써 내부망에 특정 PC를 찾아갈 수 있도록 설정해주는 것
위와 같이 PC들은 각각의 고유 주소를 가지고 있고, 고유 IP에 특정 포트를 부여해줌으로써 내부망에 특정 PC를 찾아갈 수 있도록 설정해준다. 즉, 외부 IP 172.19.20.12:3306으로 접속 시 라우터는 출발지 포트(3306)와 매칭되는 목적지 포트(3306)로 연결시켜준다.
2) 외부포트
- 외부에서 접속 시 사용할 포트
3) 내부포트
- 내 컴퓨터에서 애플리케이션에 접속 시 사용하는 포트
※ 포트포워딩 실습
- 내 PC에 Nginx 설치 후 포트포워딩하여 내 휴대폰으로 접속해보기 (와이파이 연결 X, 셀룰러로 연결)
- 내 핸드폰에서 PC로 어떤 과정을 거쳐서 접속 되는지 그려보기.