ping vs telnet

Ping과 Telnet


네트워크가 살아있는지 체크하기 위해 ping과 telnet을 자주 쓰는데 어떻게 다른지 자세히 살펴보자.


Ping

Ping은 포트를 지정하지 않고 인터넷 연결만 체크한다.
DDOS 공격에 이용되기도 해서 ping을 막기도 한다.

ping 설정 (Window 기준)
Window 방화벽 -> 고급 -> ICMP 설정

ICMP는 호스트 간 메세지를 주고받기 위한 프로토콜로 OSI 7계층 중 3번째 network 계층


Telnet

기본적으로 23번 포트를 사용한다.

특정 서버에서 서비스가 살아있는지 여부를 체크하는 방법으로 사용하고, 평문으로 전달된다. 보통 원격서버와 접속하기 위해 많이 사용된다.

암호화 되지 않은 평문을 그대로 보내기에 보안상 취약점을 가지고 있다.
(중간에서 데이터를 가로채는 네트워크 스니핑을 당할 경우 데이터가 고스란히 노출)

이 때문에 데이터를 암호화해서 보내는 SSH(Secure Shell)이 요즘 많이 쓰인다.


경험

보안이 철저한 네트워크에 접속을 해야하는 일이 있었는데, DB 접속 시 시간이 초과하여 접속이 이루어지지 않은 문제를 겪었다. 이 때, Oralce 내부 문제인지 알고 여러번 지웠다가 깔면서 생고생한 경험이 있었는데, 다른 선배분이 이럴 때는 네트워크 접속이 제대로 이루어지는지 알아보는게 먼저라고 Ping을 이용해 해당 네트워크와 접속을 체크해 보았다. Ping을 통해 네트워크가 연결되지 않음을 확인했고, Oracle 문제가 아니라 내 PC에서의 접속이 서버측 방화벽에서 막히는 것을 알았다. 그래서 방화벽 해지를 요청하여 DB에 접속할 수 있었다.

Http Requset와 Response 구조



1. Request 구조

리퀘스트행 : 메소드, URL, HTTP 버전으로 정보가 표시, 위에는 get메서드로 /member/login.do url을 요청한것

헤더 : 메타정보가 담겨져 있다.




2. Response 구조



상태행 : http 버전, 상태코드, 설명문으로 표시, 상태코드는 서버의 결과를 숫자로 나타낸 것

포트 번호


포트번호란?


인터넷 계층에서 전달하는 다양한 종류의 패킷이 각각 어느 애플리케이션들에게 

전달하기위해서 주어지는 번호

(IP는 컴퓨터를 찾을 때 사용하는 주소라면 PORT는 컴퓨터 내부의 애플리케이션을 찾을때 사용하는 번호)



포트 번호의 종류와 범위


0 ~ 65535번까지 사용 가능


웰 노운 포트 

레지스터드 포트 

다이나믹 포트 

 0 ~ 1023번 

 1024 ~ 49151번 

 49152 ~ 65535번 

   서버 프로그램이 수신 대기할 때 사용                    벤더가 할당받아 사용                        클라이언트 프로그램이 사용



주요 웰 노운 포트


포트 번호 

 프로토콜 

 20

 FTP(데이터 커넥션)(하지만 패시브모드에서는 랜덤 포트를 사용) 

 21

 FTP(컨트롤 커넥션) 

 22

 SSH(원격 제어) 

 23

 Telnet(원격 제어)

 25

 SMTP(이메일 전송) 

 80

 HTTP(웹) 

 110

 POP3(이메일 수신) 

 143

 IMAP4(이메일 수신) 


트랜스포트 계층


애플리케이션 계층과 인터넷 계층 사이에 위치

트렌스포트 계층의 역할은 컴퓨터가 받은 데이터를 애플리케이션까지 전달하는 것



트랜스포트 계층은 할당된 포트 번호로 참고하여 데이터를 애플리케이션에 전달


예) 프르토콜 번호가 6이면 TCP, 17이면 UDP로 전달,

     그 후에 포트 번호가 80이면 HTTP로 전달



트랜스포트 계층에서 사용되는 프로토콜 TCP, UDP


TCP


데이터의 정확한 전달을 중시(이메일, 웹 등에 쓰임)

정확한 전달을 중시하기 때문에 도달하지 않은 패킷(데이터 조각)이 있다면 재전송을 요청



UDP


데이터의 전송 속도를 중시(VoIP, 동영상 스트리밍)



FTP


FTP란?


파일 전송 프로토콜



FTP 주요 명령어


CWD - 디렉터리를 이동한다.

MKD - 디렉터리를 생성한다.

LIST - 파일 목록을 표시한다.

RETR - 파일을 다운로드한다.

STOR - 파일을 업로드한다.

DELE - 파일을 삭제한다.



FTP의 접속 형태


1. 데이터 커넥션

파일 주고받기 위한 커넥션

2. 컨트롤 커넥션

명령어를 보내기 위한 커넥션



FTP의 패시브 모드


방화벽이나 가정용 초고속 인터넷 라우터를 사용하는 경우 외부와의 통신을 차단하는 경우가 많음

특히 FTP 서비스에서는 서버 내부에서 외부로 나가는 통신을 방화벽이 차단하여 파일 전송이 안되는 경우도 발생

이를 해결하기 위해 패시브 모드를 사용하여 클라이언트 쪽에서 서버쪽으로 역으로 데이터 커넥션을 만들어 준다.


* 패시브 모드와 액티브 모드는 누가 접속을 만드느냐에 불과하지만, 이것이 보안과 데이터 전송 가능여부를 좌우한다.



원격 제어


Telnet과 SSH(Secure SHell)


원격지의 컴퓨터를 명령어로 제어하기 위한 프로토콜

보안을 위해 내용이 암호화되는 SSH를 많이 사용



GUI 인터페이스 원격 제어


RDP(Remote Desktop Protocol) 윈도우에 내장된 원격 데스크톱이 사용하는 프로토콜

RFB(Remote FrameBuffer) OS에 독립되어 범용으로 사용 가능한 프로토콜


GUI 인터페이스를 사용할 때는 마우스난 키보드 제어 정보를 서버로 보낸 후 원격 서버의 화면 이미지를

응답으로 받는 방식이기 때문에 화면 이미지의 데이터 크기를 줄여주기 위한 압축기술도 함께 사용




이메일

이메일에 사용되는 애플리케이션 계층 프로토콜


SMTP : 이메일을 발신할 때

POP : 이메일을 수신할 때

IMAP : 서버에 메일을 보관



SMTP의 특징


발신할 때만 쓰이는 것이 아니라, 송신자의 메일 서버에서 수신자의 메일 서버로 메일을 보낼 때도 사용

stateful 프로토콜로 상태를 가지고 있다. --> 이 말은 전송 종료됬다는 명령이 보내져야 통신을 종료

메일 서버간의 메일 중계에도 쓰임


SMTP는 POP과 다르게 사용자 인증 체계가 없음 --> 이를 이용해 스팸 메일 발송에 악용

이를 보안하기 위해 SMTP Auth 프로토콜이 만들어짐(SMTP에 사용자 인증 기능을 추가)



POP의 특징


SMTP 프로토콜을 통해 최종적으로 수신자의 메일서버에 저장되는데,

수신자의 메일 서버에 저장된 메일을 확인할 때 이 POP 프로토콜이 사용


(이 외에도 메일 건수, 용량, 메일 삭제 처리도 POP 프로토콜을 사용)


POP은 사용자 인증을 먼저 한 후 통신을 시작



IMAP의 특징


POP 프르토콜은 클라이언트가 메일을 수신하면 메일서버에 보관된 메일을 삭제한다.

이에 반해 IMAP 프로토콜은 클라이언트 PC가 메일을 수신하더라도 메일 서버에 메일을 저장

--> 저장 공간이 충분치 않은 스마트폰에 많이 활용







웹페이지와 웹서비스(웹 어플리케이션)의 차이


웹페이는 미리 만들어둔 정적인 HTML 파일로 응답

웹서비스는 서버 프로그램이 요청 내용에 따라 동적으로 HTML 데이터를 만들어 응답



GET 방식과 POST 방식


HTML 입력 폼을 통해 HTML 요청을 보낼 떄 주로 GET과 POST 방식의 요청이 사용


GET


입력폼의 내용이 요청행에 포함

GET/search?q=javablog HTTP/1.1


get방식으로 적은 양의 데이터만 전송 가능, 육안으로 데이터가 보여서 보안 취약

보통 정보를 요청하는데 쓰임


POST


입력 폼의 내용이 message body에 담겨서 전송

get방식에 비해 많은 양의 데이터 전송, get보다는 쉽게 노출되지 않음

하지만 보안 취약점 존재

정보를 저장하거나 변경할 때 주로 사용  --> 데이터의 암호화가 필요한 경우 HTTPS 프로토콜을 사용



AJAX


Asynchronous JavaScript and XML의 약자


기존의 웹 서비스의 응답 결과 표시 방식은 웹 페이지 전체를 다시 그려 갱신하는 방식


AJAX는 HTTP 메세지로 통신한다는 점에서는 일반적인 요청 방식과 비슷하지만, 

요청을 보내는 주체가 브라우저가 아닌 자바스크립트

웹 브라우저가  서버로 요청하는 것이 아니라, 자바스크립트로 작성된 프로그램이 웹 서버와 통신하고

응답 결과로 받은 내용을 웹브라저가 전체 페이지를 다시 갱신하는 것이 아니라, 

자바스크립트가 웹 페이지의 특정 부분에만 응답받은 내용이 갱신되도록 처리한다.


--> 그 결과로, 사용자는 전체 페이지를 다시 조회하지 않고, 서버의 응답을 바로 받을 수 있기 때문에

     자연스러운 상호작용이 가능하고 서비스의 사용성이 높아짐



세션을 유지하기 위한 쿠키


HTTP는 기본적으로 무상태(statless) 프로토콜이기 때문에 요청, 응답 과정에서 상태정보를 저장하지 않는다.

상태를 유지하면서 연속된 응답을 해야 할 때 쿠키라는 기술을 사용

여러 건의 요청 처리를 동일한 사용자 접속 세션으로 인식할 수 있도로 함


쿠키 정보를 방어하기 위한 방어책


기본적으로 웹브라우저가 자체적으로 구현하고 있음

쿠키가 생성된 웹 서버와 동일한 도메인을 사용하는 웹 사이트에만 쿠키가 전송되도록 제한

이미 저장된 쿠키가 있다면 유효기간을 확인


* 보안 문제가 생길만한 정보는 클라이언트 PC의 쿠키에 저장하지 말아야 한다. 

* 동일한 사용자인지 확인하기 위해 세션 ID같은 식별정보만 주로 클라이언트 쿠키에 저장하도록 제한

애플리케이션 계층


사용자가 직접 사용하면서 체감할 수 있는 서비스를 제공



사용자가 직접 사용하는 프로토콜


Http - 웹 클라이언트와 웹 서버 사이에서 웹페이지 데이터를 주고 받는다. 

POP, SMTP, IMAP - 메일을 송수신하고 보관한다.

SMB, AFP - LAN 안에서  파일을 공유한다.

FTP - 서버를 통해 파일을 주고 받는다

Telnet, SSH - 원격에서 서버를 제어한다.



사용자가 간접적으로 사용하는 프로토콜


DNS - 도메인명과 IP어드레스의 정보를 서로 변환할 때 사용한다.

DHCP - LAN 내의 컴퓨터에게 IP어드레스를 할당할 때 사용한다.

SSL/TLS - 통신 데이터를 암호화하여 주요 정보를 안전하게 주고 받을 때 사용한다.

NTP - 네트워크에 연결된 장비들의 시스템 시간을 동기화할 때 사용한다.

LDAP - 네트워크에 연결된 자원(사용자, 장비들)의 통합 관리에 필요한 디렉터리 서비스를 제공할 때 사용한다.



웹페이지가 표시되기까지의 과정


웹브라우저가 웹서버로 특정 웹페이지를 요청하면 웹서버가 해당 페이지의 내용을 HTML 형식으로 응답



HTTP 메세지


웹 브라우저와 웹서버는 HTTP라는 애플리케이션 계층의 프로토콜을 사용

이 과정에서 주고 받은 정보가 HTTP 메세지, 크게 request와 response로 나뉨



HTTP  메세지 구조


request line/ status line(응답 정보행)   - 메세지의 종류나 상태를 표시 

 header  - 메세지에 대한 상세한 정보 

 blank line

message body  - 응답인 경우 이 부분에 HTML 데이터가 들어감



HTTP는 통신 시 정보를 한 번씩 주고 받은 후 바로 끊는 형태로 처리,

이렇게 상태정보를 저장하지 않는 통신형태를 stateless라고 함(무상태 프로토콜)

--> 상태 정보를 유지하기 위한 별도의 처리가 필요




HTTP 요청과 URL


http://www.test.co.kr/test/index.html

스키마        host        도메인          디렉토리        파일


스키마 - 사용하는 프로토콜을 명시

호스트 - 서버의 이름 혹은 역할을 명시

도메인 - 서버를 운영하는 조직을 명시

디렉터리 - 서버내의 디렉터리를 명시

파일 - 해당 디렉터리 내의 파일을 명시



HTTP 요청 예시


 GET/test/index.html HTTP/1.1 

 Host:www.test.co.kr

 connection : keep-alive

 Accept : text/html,aplication/xhtml+xml

 User-Agent: Mozila/5.0(Macintosh; Intel Mac OS X 10_9_2) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/3

 생략

 get일 경우 메시지 바디는 없다.



HTTP 응답과 상태 코드


HTTP 응답 데이터에는 첫번쨰 행에는 요청에 대한 응답 상태를 표시하는 상태코드가 들어간다.

응답이 정상이라면 메시지 바디에 요청한 웹페이지의 내용이 들어감


 HTTP/1.1 200 OK 

 data:TUE, 10 Jan 2017 14:19:20 GMT

 Server:Apache

 Last-Modified:Fri, 8 Jan 2017 12:12:12 GMT

 생략

 빈줄

 HTML 내용



'네트워크' 카테고리의 다른 글

네트워크 서비스와 어플리케이션 계층(3)  (0) 2017.01.13
네트워크 서비스와 애플리케이션 계층(2)  (0) 2017.01.11
프로토콜 종류  (0) 2017.01.04
컴퓨터네트워크(3)  (0) 2017.01.03
컴퓨터 네트워크(2)  (0) 2016.12.24

프로토콜 종류



애플리케이션 계층


 프로토콜 이름

설명 

 HTTP

 웹페이지의 데이터를 주고 받음 

 HTTPS 

 보안을 위해 웹페이지 데이터를 주고 받는 과정을 암호화 

 POP3

 서버에 보관된 수신 메일을 꺼내옴 

 SMTP

 메일을 송신함 

 FTP

 파일을 전송함 

 Telnet

 컴퓨터를 원격에서 제어함  

 SSH

 보안을 위해 컴퓨터를 원격에서 제어하는 과정을 암호화함 

 SMB

 윈도우 컴퓨터와 파일을 공유함 

 DHCP

 컴퓨터에게 프라이빗 IP를 동적으로 할당

 DNS

 도메인 이름과 IP 어드레스를 서로 변환함 

 SSL

 보안을 위해 통신 과정에서 주고받는 테이터를 암호화 



트랜스포트 계층


프로토콜 이름 

설명 

 TCP

 애플리케이션 데이터를 송수신하되 정확한 전달을 중시 

 UDP

 데이터를 송수신하되 전송 속도를 중시 



인터넷 계층


프로토콜 이름 

설명 

IP

 패킷을 목적지까지 전달 

ICMP 

 IP의 통신 오류를 전달 

 IPsec

 패킷을 암호화하여 전달 

 ARP

 네트워크 장비의 MAC 어드레스를 알아냄 



네트워크 인터페이스 계층


프로토콜 이름 

설명 

 이너넷

 일반 금속 케이블이나 광케이블을 통해 데이터를 전달 

 PPP

 사용자 인증 후에 원격지의 장비와 통신함 


4계층의 역할


1. 애플리케이션 계층


역할 - 사용자가 실제로 체감할 수 있는 서비스를 제공하는 것


키워드 - URL



2. 트랜스포트 계층


역할 - 애플리케이션 계층의 프로그램에서 전달 받은 데이터를 목적지 애플리케이션 계층의 프로그램까지 전달하는 것

    재전송도 여기서 수행

    데이터가 제대로 전달되도록 포트 번호 정보를 헤더에 붙이거나 떼어내는 일을 한다.


키워드 - 포트



3. 인터넷 계층


역할 - 데이터에 에드레스 정보를 덧붙여 목적지까지 전달하는 것, 인터넷 통신에서는 목적지까지 도달할 수 있는 경로를 찾아야 하는데,

         이때 라우터라는 장비가 사용


키워드 - 어드레스(192.168.219.120)



4. 네트워크 인터페이스 계층


역할 - 유선 LAN 어댑터나 무선 LAN 어댑터가 처리할 수 있는 형태로 데이터를 변환하고 데이터를 목적지까지 전달 하는 것


핵심 - 인터넷 계층은 멀리 떨어져 있는 목적지까지 어떻게 데이터를 잘 전달할 수 있을까에 초점을 맞추고 있고

         네트워크 인터페이스 계층은 물리적으로 인접하여 연결된 장비까지 어떻게 데이터를 잘 전달할까에 초점을 맞추고 있다.


키워드 - 이더넷 헤더




통신규약과 프로토콜



프로토콜이란?


컴퓨터가 통신할 때, 지켜야 할 절차나 규약

어떤 절차에 따라 무엇을 보낼것인가?



각 계층 별 프로토콜


애플리케이션 계층 - HTTP

트랜스포트 계층, 인터넷 계층 - TCP/IP

네트워크 인터페이스 계층 - 이더넷



주고받은 데이터의 구조


이더넷 헤더 

IP 헤더 

TCP 헤더 

HTTP 데이터 

 

네트워크 인터페이스         인터넷 계층                    트랜스포트 계층             애플리케이션 계층




TCP/IP란?


인터넷에서 사용되는 각종 표준 프로토콜을 한데 모아서 일컫는 말



인터넷이란?


TCP/IP라는 프로토콜 집합을 사용해서 전 세계의 네트워크를 연결하고 통합한 세계 최대의 네트워크





'네트워크' 카테고리의 다른 글

네트워크 서비스와 애플리케이션 계층(2)  (0) 2017.01.11
네트워크 서비스와 애플리케이션 계층(1)  (0) 2017.01.10
프로토콜 종류  (0) 2017.01.04
컴퓨터 네트워크(2)  (0) 2016.12.24
컴퓨터 네트워크(1)  (0) 2016.12.22

+ Recent posts