1. UDP 와 TCP의 특징을 비교
차이점:
TCP
⦁ Connection-oriented(연결 지향형)
⦁ 잃어버리면 안되는 중요한 Data전송(신뢰성 있는 Data전송)
⦁ Data송·수신 전 TCP 연결을 우선 적으로 함
UDP
⦁ Connection-less(비 연결 지향형)
⦁음성, 영상과 같은 실시간 Data전송
⦁ Data송·수신 전 연결을 하지 않음
공통점 :
⦁ Ephemeral port와 well-known port를 사용함
2. TCP 패킷
Source port number |
19923 | ||||||||||
Destination Port number |
8080 | ||||||||||
Sequence number |
0 | ||||||||||
ACKnowledgement number |
0 | ||||||||||
Offset/(Header Length) |
28 | ||||||||||
Reserved |
0 | ||||||||||
URG |
ACK |
PSH |
RST |
SYN |
FIN |
0 |
0 |
0 |
0 |
1 |
0 |
Window Size |
8192 | ||||||||||
Checksum |
0XF301 | ||||||||||
Urgent Pointer |
0 | ||||||||||
Options |
8byte MSS(4byte) No-operation(1byte) No-operation(1byte) TCP SACK Permitted option:true(2byte) |
- 위 패킷은 Retranmission 패킷으로 연결하기 위한 패킷인 것을 알 수 있다. 자신의 source port번호는 Ephemeral port로 49923, Destination port번호는 8080이다.(web server접속 시 183.177.70.69:8080 으로 연결하여 Destination port번호가 8080이 뜬다. web server가 존재하는 web server에 접속하면 Destination port번호는 80이 들어가게 된다.) Sequence nuber는 0으로 이것은 최초 연결을 접속하기 위하여 발생한 패킷이기 때문이다. ack도 마찬가지로 이 패킷이 발생 하기 전 data를 주고 받은 내역이 없기 때문에 ack값도 0이다. Header length는 28로 총 28byte의 크기를 가지고 있는 패킷인 것을 알 수 있고. flag영역이 SYN영역에만 1이고 다른 모든 부분이 0인 이유는 최초로 접속을 시도하는 패킷이기 때문이다. Window Size는 buffer가 수신 가능한 data의 용량을 나타내고 checksum은 패킷 전체에 대한 checksum결과를 나타낸다. Urgent Pointer영역이 0인 이유는 flag영역의 URG영역의 값이 0인 데에 있다.(최초 연결을 위해 발생한 패킷이기 때문) option영역에는 MSS와 option영역의 크기를 4byte 배수로 맞추기 위한 No-operation과 2byte크기의 TCP SACK Permitted option:true 영역이 들어가 있다. 이 option영역은 패킷에 대해서 고정적이지 않고 가변적이다.
3. web server를 이용한 TCP 연결 설정/종료 과정 실습
- ACK 패킷
TCP 연결 설정을 위한 3-way handshaking하는 과정에 수집된 패킷은 제일 처음 SYN 패킷을 보면 Source port는 49323이고 Destination port는 80이 되어 있다. TCP 서버의 well known port번호가 80이기 때문에 Destination port번호가 80이 되게 되고 Source port번호는 Ephemeral port번호로 임의의 포트번호가 들어가게 된다. 또 여기서 Seq값과 Ack 값은 0이다. 이 이유는 최초 TCP 연결을 하는 상황에서 처음 발생하는 패킷이기 때문에 각각 0의 값이 들어간다. SYN 패킷인 것을 나타 내어 주는 flag값을 보면 SYN영역에만 1이고 다른 부분은 0이 되어 있다.
그 후, SYN, ACK 패킷을 보면 Source port와 Destination port가 서로 바뀌어 있는 것을 알 수 있다. 이것은 최초 발생한 SYN 패킷에 대하여 응답하는 패킷이기 때문이다. 이 패킷의 Seq값과 ACK은 각각 0과 1으로 되어 있다. 이 이유는 처음 발생한 SYN 패킷에서 Seq값은 0으로 패킷을 보냈기 때문에 이것을 수신한 수신측은 SYN, ACK 패킷을 송신할 때 다음 1번 data를 전송하라는 것을 나타내기 위해 ACK값을 1로 하여 전송하고 SYN영역이 0인 이유는 SYN, ACK패킷을 송신하는 측에서 보내는 첫 번째 data이기 때문에 0이 들어가게 된다. 이 패킷의 flag값을 보면 ACK와 SYN영역만 1이 들어가게 되고 ACK와 SYN영역을 제외한 영역은 모두 0이 들어가게 된다.
마지막으로 ACK 패킷은 SYN, ACK패킷에 대한 응답 패킷으로 처음 발생한 SYN 패킷과 마찬가지로 Source port와 Destination port가 저장되어 있고 SYN과 ACK는 각각 1이 저장되어 있다. 그리고 flag영역은 ACK 패킷인 것을 나타내어 주는 ACK영역에만 1이 되어 있고 ACK를 제외한 영역은 모두 0의 값이 저장되어 있다.
- 4-way handshaking 발생한 패킷
- TCP 연결 해제를 위한 4-way handshaking하는 과정에 수집된 패킷들의 header부분은 data송·수신이 끝나고 TCP 연결을 해제하기 위해서 처음 발생하는 FIN패킷을 보면 Source port는 web server의 port의 번호인 80이고, Destination port의 번호는 Ephemeral port번호가 되어 있다. flag영역을 보면 FIN 패킷을 나타내어 주는 FIN영역만 1로 설정되어 있지 않고 ACK영역의 값도 1로 설정되어 있다. ACK영역의 값이 1인 이유는 data송·수신이 끝나고 난 후 해제 하는 것이기 때문에 이전에 받은 data에 대한 패킷의 ACK도 포함 되어 있기 때문이다.
그 후, client는 수신한 FIN패킷에 대한 응답으로 ACK가 발생하는데 ACK가 발생하고 난 후 바로 연결이 해제 되지는 않는다. 이때의 패킷의 Source port와 Destination port는 서로 바뀌게 된다. client가 연결 해제 준비가 완료 되면 FIN, ACK 패킷을 발생하는데 이전에 발생한 ACK패킷과 flag영역을 제외한 영역은 모두 같은 값이 저장되어있다. flag값은 이제 자신도 연결 해제할 준비가 되었다는 것을 알리기 위해 FIN영역이 1로 저장된다.
마지막으로 FIN, ACK 패킷을 받은 web server는 마지막으로 ACK 패킷을 발생하게 된다. 이 ACK 패킷은 단순 응답 패킷이므로 flag영역의 ACK영역만 1이 되어 있다. 그 후, TCP 연결은 완전히 해체가 된다.
4. ftp server를 이용한 TCP 연결 설정/종료 과정 실습
ftp 설치법 : yum install –y vsftpd ftp 명령어 입력하여 설치
vi/ etc/ sysconfig/ iptables에 들어가서 아래 내용 추가 후 저장
-A INPUT –m state —state NEW –m tcp –p tcp —dport 20 –j ACCEPT
-A INPUT –m state —state NEW –m tcp –p tcp —dport 21 –j ACCEPT
-A OUTPUT –m state —state NEW –m tcp –p tcp —dport 21 –j ACCEPT
위의 내용 추가 저장 후에 service iptables restart 명령어 입력
⦁ setsebool –p ftp_home_dir=1 입력하고 service vsftpd restart 명령어 입력
⦁ ftp 입력 후 ‘ftp>’ 뜨면 “open IP+주소(FTP 서버 주소)” 치고 접속 성공 후 name에는 anonymous, 비밀번호는 아무거나 입력(※ 연결 끊을 때 exit)
⦁ ftp server로의 접속을 종료하여 TCP 연결 종료 실습 (조원들 컴퓨터 사이의 TCP연결 설정)
- 3-way handshaking 발생한 패킷
→ ftp server를 이용한 TCP 연결 과정에 수집된 패킷들의 header영역은 web server를 이용한 TCP 연결 과정과 차이점은 port가 ftp port번호인 21이 들어가게 된다.(web server port 번호는 80이다.) 그 외에는 web server를 이용한 TCP 연결 과정과 같다. 최초 SYN 패킷이 발생하게 되고 flag영역은 SYN 패킷인 것을 알려주는 SYN 영역만 1이 들어가게 되고 나머지는 0의 값이 들어가게 된다. 그 후, ftp server에서 발생시키는 SYN, ACK 패킷을 보면 Source port는 자신의 ftp port번호인 21이 들어가게 되고 Destination port번호는 ftp client port번호인 Ephemeral port번호가 들어가게 된다. 그리고, flag영역은 ACK영역과 SYN영역만 1이 저장되고 나머지 영역은 0이 들어가게 된다. 마지막으로 ftp client가 발생시키는 ACK 패킷을 보면 Source port번호는ftp client port번호인 Ephemeral port번호가 들어가고 Destination port번호는 ftp server port번호인 well known port번호 21이 들어가게 된고 ACK 패킷을 나타내기 위해 flag영역의 ACK영역만 1이 저장되게 된다.
* 따라서 web server와 ftp server를 이용한 TCP 연결 과정에서 나타나는 패킷들의 차이점은 port번호가 차이난다. client는 Ephemeral port번호를 사용하고 server측은 well known port번호를 사용하는데 ftp는 21, web은 80을 사용한다.
- 4-way handshaking 발생한 패킷
- ftp접속 해체를 통하여 TCP연결 해체를 위한 4-way handshaking과정에서 수집된 패킷들의 header영역은 수집된 패킷들의 header영역의 값들도 web server를 통하여 수집된 패킷들의 header영역의 값과 비슷하다. 차이점은 위에서 말했다 시피 port번호가 차이가 있다. ftp를 통하여 수집된 패킷이기 때문에 ftp server의 port는 21이 되어있고 client는 ephemeral port로 되어있다. 동작 과정은 web server에서의 TCP연결 해체와 동일하다.
5. TCP 리셋 메시지 송신 실습
- Reset Message는 server가 TCP 연결이 된 상태에서 server가 down이 되고 난후 client가 server에게 data를 전송하면 server는 down이 되어 TCP연결정보가 없는 상태 이기 때문에 client에게 Reset Message를 전송하게 된다.
- 또, TCP 연결 후 data의 수신이 일정 시간 동안 한번도 일어나지 않게 되면 probe message를 보내게 되는데 이때 probe message에 응답이 없으면 수신 받는 쪽은 Reset message를 보내게 된다.
- 마지막으로 Server에 잘못된 접속을 요구하는 SYN packet을 수신하면 client에게 Reset Message를 보낸다.
'IT > CISCO' 카테고리의 다른 글
Basic IOS Configuration(4) (0) | 2017.02.07 |
---|---|
Basic IOS Configuration(3) (0) | 2017.02.06 |
Basic IOS Configuration(2) (0) | 2017.02.06 |
Basic IOS Configuration(1) (0) | 2017.02.06 |
통신프로토콜 (ICMP)(2) (0) | 2016.12.17 |