일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- IF
- IFELSE
- C언어
- 스캐너클래스
- 자료구조
- 백준알고리즘
- 파이썬프로그래밍기초
- Scanner class
- 데이터
- java프로그래밍
- 기본
- IF문
- MySQL
- 함수
- 반복문
- 하드웨어
- 스캐너
- for
- Scanner
- Spring
- 백준
- 알고리즘
- FOR문
- error
- java
- 변수
- 유비쿼터스
- 배열
- 1차원배열
- 자바
- Today
- Total
정리하고기록하자
TCP / IP 본문
TCP / IP
TCP / IP 란 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜의 집합이다.
TCP : 전송 제어 프로토콜 ( Transmission Control Protocol ) 이며 한 기기에서 다른 기기로 데이터를 전송하는 것을 담당하는 것.
IP : 인터넷 프로토콜 ( Internet Protocol ) 이며 이 프로토콜은 데이터의 조각을 최대한 빨리 대상 IP 주소로 보내는 역할을 한다.
TCP / IP 의 계층
응용계층 ( Application Layer )
특정 서비스를 제공하기 위해 애플리케이션 끼리 정보를 주고 받을 수 있다.
사용자가 네트워크에 접근할 수 있도록 한다. 사용자 인터페이스를 제공 할 뿐만 아니라 이메일, 원격 파일 접근 및 전송, 공유 데이터베이스 관리등의 서비스를 제공 한다.
SMPT : 인터넷에서 전자우편을 보낼 때 이용하게 되는 표준 통신 규약 ( 메일 프로그램 )
HTTP : 웹 서버와 사용자의 인터넷 브라우저 사이에 문서를 전송하기 위해 사용되는 통신 규약 ( 인터넷 브라우저 )
FTP : 파일전송 규약
DHCP : 동적 호스트 설정 통신 규약
SNMP : 간이망 관리 프로토콜
전송계층 ( Transport Layer )
송신된 데이터를 수신측 애플리케이션에 확실하게 전달한다.
전송을 담당하는 계층이다.
전송계층에는 TCP 뿐만 아니라 사용자 데이터그램 통신규약 ( *UDP ) 도 있다.
*UDP : TCP 보다 단순하며 다른 데이터에 비해 안전하게 보호되어야 할 필요가 없는 실시간 응용 프로그램에서 흔히 이용한다. UDP는 TCP 보다 신뢰도가 낮고 오류 검출, 흐름 제어 등의 기능을 제공하지 않아 패킷을 빠르게 전송하는 응용 계층에서 이용되고 있다.
인터넷 계층 ( Internet Layer )
수신 측 까지 데이터를 전달하기 위해 사용한다.
인터넷 계층은 네트워크 간 *데이터 패킷의 전송을 관리한다
*데이터 패킷 : 통신망을 통해 전송하기 쉽도록 자른 데이터의 전송 단위
네트워크 계층 ( Network Access Layer )
네트워크에 직접 연결된 기기 간 전송을 할 수 있도록 한다
데이터가 원하는 IP 주소에 도달할 뿐만 아니라 해당 네트워크 내의 연결된 기기에 연결되어 있는지 확인하는 역할이다. 데이터 링크 계층은 원하는 기기의 MAC 주소를 확인하고 이더넷 케이블 및 와이파이를 통한 데이터 전송을 관리하는 등의 작업을 담당한다
TCP / IP 의 흐름
1. 어느 웹 페이지를 보고 싶다는 HTTP 리퀘스트르 지시한다 ( 애플리케이션 계층 )
2. 애플리케이션 계층에서 받은 데이터를 통신하기 쉽게 조각내어 안내번호와 포트번호를 붙인다. ( 트랜스포트 계층 )
3. 수신지 MAC 주소를 추가해서 링크 계층에 전달한다. ( 네트워크 계층 )
4. 데이터를 받아들여 순서대로 위의 계층에 전달한다. ( 링크 계층 )
송신할 때는 각 계층을 거칠 때마다 헤더에 필요한 정보가 추가된다.
수신할 때는 해당 계층마다 사용한 헤더를 삭제한다.
이렇게 정보를 감싸는 것을 캡슐화라고 한다.
애플리케이션 계층 ( HTTP 데이터 )
ex ) 웹 브라우저에 "www.goole.com" 으로 HTTP Request 메시지를 보내는 것이다.
트랜스포트 계층 ( TCP 헤더 )
발신지 포트 주소 ( SP ) : 컴퓨터에서 만든 소켓의 포트번호
목적지 포트 주소 ( DP ) : 80번 포트 웹 서버의 웰노운 포트
ex ) 발신지 포트 주소 는 내 컴퓨터에서 만든 소켓의 포트 번호라서 당연히 내 컴퓨터는 알고 있을 것이다.
그리고 목적지 포트 주소 또한 80으로 우리는 알고 있다.
인터넷 계층 ( IP 헤더 )
시작 IP 주소 ( Source Address )
목적지 IP 주소 ( Destination Address )
ex ) 나의 시작 IP 주소는 알고 있겠지만 목적지 IP 주소는 아직 모른다. 지금은 "www.google.com" 이라는 도메인 정보만 알고 있다. 그렇지만 DNS 프로토콜을 통해서 도메인 정보로 IP 주소를 알아 낼 수 있다.
DNS : 브라우저는 OS에게 도메인에 대한 ip 주소를 알고 싶다고 요청한다. 그러면 OS에서 DNS서버로 요청을 보내게 된다. DNS는 도메인이 담긴 쿼리를 도메인 서버로 보내게 된다. 그러면 도메인 서버가 IP 주소를 응답해준다.
링크계층 ( Ethernet 헤더 )
ex ) 마지막으로 Ethernet 프로토콜에 대한 헤더를 만들어야 하는데 아직 MAC 주소를 모른다. 여기서 MAC 주소는 구글 MAC 주소 대신 물리적으로 연결된 우리집 공유기의 MAC주소가 필요하다. 이 공유기를 통해 달른 네트워크와 연결이 가능 하기 때문에 '게이트웨이' 라고 부르기도 한다.
우리는 이미 게이트웨이에 대한 정보를 알고 있다. 그럼 어떻게 IP 주솔로 MAC주소를 알 수 있을까
IP 주소로 MAC주솔를 알아내기 위해서 *ARP 프로토콜을 사용 한다.
ARP 프로토콜 : IP 주솔를 MAC주소로 바꾸어주는 주소해석 프로토콜
3-Way-Handshaking
TCP는 연결지향형 프로토콜이다. 그래서 TCP 프로토콜은 데이터를 전송하기 전에 송신측과 수신측이 서로 연결되는 작업이 필요 하다. 이러한 작업을 3-Way-Handshaking 이라고 한다.
3-Way-Handshaking 을 수행하기 위해서는 TCP 헤더에 표시한 플래그들이 사용된다.
이러한 플래그들을 컨트롤 비트라고 부른다.
3-Way-Handshaking 은 SYN과 ACK 플래그가 사용된다.
- 클라이언트는 서버에게 접속을 요청하는 SYN 패킷을 보낸다.
- 서버는 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN 플래그가 설정된 패킷을 보낸다.
- 클라이언트는 서버에게 다시 ACK를 보낸다.
이렇게 연결이 이루어지고 데이터가 오가게 된다.
4-Way-Handshaking
HTTP의 요청과 응답 과정이 끝나면 연결을 종료해야 한다.
여기서도 TCP의 컨트롤 비트가 사용된다.
- 클라이언트가 서버로 연결을 종료 하겠다는 FIN 플래그를 전송한다
- 서버는 클라이언트에게 ACK 메시지를 보낸다. ( 자신의 통신이 끝날 때 까지 기다린다 )
- 서버가 통신이 끝나면 클라이언트로 FIN을 보낸다.
- 클라이언트는 확인했다는 의미로 서버에게 ACK를 보내면 연결이 종료 된다.
참고 :
'개발 상식' 카테고리의 다른 글
쿠키, 세션, JWT (0) | 2022.06.19 |
---|---|
네트워크 시스템의 Layer and Architecture (0) | 2022.06.11 |
Spring - PSA (0) | 2022.05.02 |
Spring - DI (0) | 2022.05.02 |
Spring - AOP (0) | 2022.04.30 |