2022. 6. 20. 23:56ㆍIT 지식
프로토콜
프로토콜은 양측이 상호작용 하는 방식에 대한 규칙을 정의한다. 일상 생활의 프로토콜은 예를 들면
누가 먼저 악수를 청할지 등으로 비공식적인 프로토콜이라고 할 수 있다면, 네트워크에서 프로토콜은 매우 정확하게 명시되는게 특징.
인터넷에는 많은 프로토콜이 존재하고 그 중 두가지는 정말 핵심적이다. 바로
IP는 인터넷 프로토콜 (Internet Protocol)로, 개별 패킷의 형식을 지정하고 패킷을 전송하는 방법을 정의하며 TCP는 전송 제어 프로토콜 (Transmission Control Protocol)로, IP 패킷을 데이터 스트림으로 결합하고 서비스에 연결하는 방법을 정의한다. 이 두 프로토콜을 합쳐서 TCP/IP 라고 한다.
게이트웨이는 IP 패킷을 라우팅하지만, 각 물리적 네트워크에서 IP패킷을 전달하기 위한 고유한 형식이 있어 패킷이 들어오고 나갈 때 네트워크 형식과 IP 형식 간 변환을 수행해야 함.
IP 레벨 위에서는 TCP가 안정적인 통신을 제공하므로 사용자가 패킷에 생각할 필요가 없고 우리가 '인터넷' 이라고 생각하는 서비스는 대부분 TCP를 사용한다.
이 프로토콜 위에는 애플리케이션 레벨 프로토콜들이 있고, 주로 TCP를 기반으로 구현된다.
여러개의 프로토콜은 계층이 있는데, 각각은

이렇게 구분 할 수 있다.
즉 UDP 사용자 데이터그램 프로토콜 은 TCP와 같은 레벨의 또 다른 프로토콜이다.
IP
인터넷 프로토콜인 IP는 신뢰성 없는 비연결형인 패킷 전송 서비스를 제공한다. 이는 자립적이며 다른 IP 패킷과 관계가 없음을 뜻한다. (서로서로 기억을 못하는 특징)
IP 패킷은 잘 전송되는 것을 보장하지 않는 '최선형' 프로토콜이라 뭔가 잘못되면 처리하기 힘들어 진다.
실제로 이를 사용할 때 IP는 매우 신뢰할 만하지만 패킷이 다른 곳으로 새거나, 손상되면 복구를 시도하지 않는다.
IP 패킷의 최대 크기는 약 65KB로 긴 메시지는 작은 덩어리로 분할되어 따로따로 전송된 다음 받는 쪽에서 재조합되어야 한다. 이더넷 패킷과 마찬가지로 IP 패킷은 지정된 형식을 갖는다.

IPv6와 IPv4의 차이
IP 패킷에서 흥미로운 부분은 타임 투 리브 'TTL' 이다. TTL은 패킷의 출발지에서 초깃값(보통 40) 으로 설정되고, 패킷을 처리하는 각 게이트웨이를 거칠 때마다 1씩 감소되는 1바이트 필드다.
카운트가 0까지 내려가면 패킷은 폐기되고 송신자에게 오류 패킷이 보내진다.
TTL필드는 순환 상태를 해결해 주지는 않는다. 다만 개별 패킷이 영원히 살아서 돌아다니는 문제는 방지한다.
IP프로토콜 자체는 데이터 전송 속도에 대해 아무런 보장을 하지 않는게 특징, 최선형 서비스로서 IP는 전송 속도는 고사하고 정보가 도착할 것이라는 약속조차 하지 않는다.
웹 브라우저 또한 정보를 캐싱하므로 최근에 봤던 웹피이지나 이미지에 접근하려고 할 때 네트워크가 아닌 로컬 캐시에서 데이터를 가져온다. 주요 인터넷 서버도 응답 속도를 높이고자 캐싱을 사용한다.
TCP:전송 제어 프로토콜
IP보다 상위 레벨의 프로토콜들은 이 신뢰성 없는 계층에서 신뢰성 있는 통신을 만들어 낸다. 그중 가장 중요한 프로토콜은 전송 제어 프로토콜 TCP
TCP는 사용자에게 신뢰성 있는 양방향 스트림을 제공한다.

TCP 세그먼트 헤더 형식
수신자는 각 세그먼테에 대해 긍정 또는 부정으로 확인 응답을 보내야 한다. 만약 긍정응답을 적절한 시간 간격후에 받지 못하면 해당 세그먼트가 분실됐다고 추정하고 다시보낸다.
이와 비슷하게 일정 시간이 지나도 받지 못한다면 부정 응답을 보내야 한다.
만약 응답 자체가 분실되면 연결 시간이 초과하여 중단된다.
TCP 프로토콜에는 이 절차가 효율적으로 작동하게 하는 메커니즘도 있다.
컴퓨터 간에 TCP 연결이 설정되면 이 연결은 특정 컴퓨터 뿐 아니라 해당 컴퓨터의 특정 포트 와도 연결 된다. 100여개의 잘 알려진 포트 중 예를 들면 웹 서버 포트 : 80번 포트, 메일 서버 포트 : 25번 포트 가 있다.
최상위 프로토콜 : 메일 전송과 파일 공유
텔넷과 SSH : 원격 로그인
텔넷을 사용하면 아마존에 접근할 수 있다. 텔넷은 다른 컴퓨터에 원격 로그인 세션을 설정하기 위한 TCP 서비스로, 일반적으로 텔넷은 23번 포트를 사용하지만, 다른 포트도 쓴다.
$ telnet www.amazon.com 80
GET / HTTP /1.0
[여기서 Enter를 한 번 더 입력하라]
명령줄에 이 코드를 입력하면 브라우저가 페이지를 표시하는 데 사용할 225,00개 이상의 문자가 응답으로 나타낸다.
여기서 GET은 HTTP 요청 몇 가지 중 하나이고, /는 서버에 기본 파일을 요청하며, HTTP/1.0은 프로토콜 이름과 버전을 나타낸다.
사용자가 적절한 권한이 있다면 텔넷을 통해 인터넷 상의 모든 컴퓨터를 로컬 네트워크에 있는 것처럼 사용할 수 있다.
$ telnet www.google.com 80
GET /search?q=검색어
[여기서 Enter를 한 번 더 입력하라]
이와 같이 입력하면 110,000 바이트 이상의 결과를 출력한다.
텔넷은 아무런 보안기능을 제공하지 않는다. 원격 시스템이 비밀번호 없이 로그인을 허용한다면 아무 정보도 요청받지 않고 로그인할 수 있다. 원격 시스템에서 비밀번호를 요구 한다면, 텔넷은 클라이언트에서 입력한 비밀번호를 변형 없이 전송하므로 데이터 흐름을 관찰하는 누구나 비밀번호를 볼 수 있다.
텔넷에서 유래한 SSH는 양방향의 모든 트래픽을 암호화 하므로 안전하게 정보를 교환 할 수 있어서 널리 사용된다. SSH는 22번 포트를 사용한다.
SMTP:단순 메일 전송 프로토콜
메일 서비스에는 두 가지 기본 프로토콜이 필요하다. SMTP는 다른 시스템과 메일을 교환하는 데 사용한다. SMTP는 수신자의 메일 처리용 컴퓨터에 있는 25번 포트로 TCP/IP 연결을 설정 한 다음, 프로토콜 내용에 따라 발신자와 수신자를 식별, 메시지를 전송한다. SMTP는 텍스트 기반이다.
어떻게 작동하는지 보고 싶다면 25번 포트에 텔넷을 실행해서 확인할 수 있다.
파일 공유와 P2P 프로토콜
1999년 6월 노스이스턴 대학의 신입생이었던 숀 패닝이 MP3 포맷으로 압축된 음악을 공유하는 프로그램인 냅스터를 시작으로 냅스터 사용자에서 다른 냅스터 사용자로 집적 전송하는 방식의 P2P 구조가 나타나게 되었다. 냅스터 프로토콜은 TCP/IP를 사용했으므로 사실상 HTTP, SMTP와 동일한 수준의 프로토콜이었다. 패닝의 작업 결과물을 중립적으로 평가하면 정말 깔끔하게 잘 만들어 진것이라고 한다.
냅스터는 인터넷, TCP/IP, MP3를 포함한 인프라와 그래픽 사용자 인터페이스 구축 도구가 이미 마련된 상태라면 간단하게 만들 수 있는 시스템이다.
2001년에 브램 코언이 개발한 비트토랜트는 P2P프로토콜을 사용하여 영화, TV 프로그램처럼 용량이 크고 인기있는 파일을 공유 할 수 있게 하였다.
비트토렌트에서는 분산된 디렉터리를 검색하여 파일을 찾고, 용량이 작은 토렌트 파일을 사용해서 누가 어떤 블록을 보내고 받았는지 기록을 유지하는 트래커를 식별한다.
때문에 비트 토렌트는 저작권 침해 탐치에 걸리기가 쉽다. 이유는 다운로드한 사람도 프로토콜 요구사항에 따라 파일 조각을 업로드해야 하므로 저작권이 적용되는 자료를 유포하는 과정에서 쉽게 식별이 되기 때문이다.
P2P네트워크는 합법성이 의심스러운 파일 공유 이외의 용도로 쓰이기도 한다 대표적인 예 는
비트코인 하.......................................
'IT 지식' 카테고리의 다른 글
| SDK API (0) | 2022.06.30 |
|---|---|
| FormData란 (0) | 2022.06.27 |
| 쿠키의 개념 (0) | 2022.06.27 |
| AWS - S3, CloudFront, Route53을 이용한 정적 호스팅 (0) | 2022.06.07 |
| 아날로그정보 디지털로 바꾸기 (0) | 2022.05.19 |