관리 메뉴

공부공부 공부공부내용

네트워크 기초 정리 2 본문

IT 기초, 네트워크, 리눅스/1. 네트워크

네트워크 기초 정리 2

wkdth04 2020. 6. 7. 19:24

전송계층의 TCP / UDP // 각각의 헤더 구조 분석

DNS레코드 및 패킷 분석

udp -> 

 

앞에서 이더넷 premable이 7byte엿는데

udp에서는 지금 헤더가 총 8바이트, 그러므로 특징이 단순하다.

udp프로토콜은 단순무식, 포트가 열ㄹ리면 데이터부터 넣는다. 그래서 데이터가 전송실패가 이루어지면 헤더 자체에 그것을 기억하느ㄴ 기능이없기때문에 신뢰도가 낮다.

 

통신에 대한 연결흐름이 계속 이어가지도 않음. ICMP가 타입넘버 3을 반송해주고 ,UdP를 보좌해줌

udp 단점-> 신뢰도 낮고, 어디까지 갔는지 통신의 흐름도 파악이 안됨, 기억기능이 없다.

udp의 장점은 속도. 스피드가 빠름. 

 

tcp는 udp를 보완

장점-> 안전, 통신 흐름 파악ㄱㅏ능



flags/통신의 상태를 나타내주기위해 사용

2) Flags

dns패킷의 성격을 제어하는 많은 필드로 구성되어 있습니다. 하나하나 살펴봅니다.

 

 

[출처] 와이어샤크(Wireshark) DNS 패킷분석|작성자 SH




http://www.ktword.co.kr/word/abbr_view.php?m_temp1=1889&m_search=tcp+header

 

TCP 헤더 구조

1.urg

 ㅇ Urgent pointer (16 비트)

1 ,0 으로 표현

     - TCP 세그먼트에 포함된 긴급 데이터의 마지막 바이트에 대한 일련번호

        . 현재 일련번호(sequence number)로부터 긴급 데이터까지의  바이트 오프셋(offset)

        . 해당 세그먼트의 일련번호에 urgent point 값을 더해 긴급 데이터의 끝을 알수있음

2. ack는

요청ㅇ에 따른 응답, 확인응답

 

3.psh *******

데이터를 전송시 사용할때 사용하는 플래그쉽

 

 ㅇ PSH (Push)

     - 버퍼링된 데이타를 가능한한 빨리 상위 계층 응용프로그램에 즉시 전달할 것

        . 수신측은 버퍼가 찰 때까지 기다리지 않고, 

          수신 즉시 버퍼링된 데이터를 응용프로그램에 전달

        . 例) telnet 세션에서 `q` 입력 만으로 세션 종료를 알릴 때 등

     - 때론, 서버측에서 더이상 전송할 데이터가 없음을 나타내기도 함





4.ㅇ RST (Reset)        [강제 연결 초기화 용도]

     - 연결확립(ESTABLISHED)된 회선에 강제 리셋 요청 

        . 강제 리셋 : RST=1          (RST 세그먼트 또는 RESET 세그먼트)

 

        . 연결 상의 문제를 발견한 장비가 RST 플래그를 `1`로 설정한 TCP 세그먼트를 송출

           .. LISTEN,SYN_RCVD 상태일때 => RST 수신한 경우에 => LISTEN 상태로 들어감

           .. 그밖의 상태 일때 => RST 수신한 경우에 => 연결 끓고 CLOSED 상태로 들어감



5.SYN (Synchronize)  [연결시작,회선개설 용도]

     - TCP 연결설정 초기화를 위한 순서번호 동기화  ☞ TCP 연결 설정

        . 연결요청  : SYN=1, ACK=0   (SYN 세그먼트)

        . 연결허락  : SYN=1, ACK=1   (SYN+ACK 세그먼트)

        . 연결설정  : ACK=1          (ACK 세그먼트)

 

     * 즉, 송수신 간에 순서번호 동기화

 

2.반응에 따른 상태에 대한 정보

3. 통신 요청에 따른 반응 파악



https://sunsson.tistory.com/946



http://www.ktword.co.kr/word/abbr_view.php?m_temp1=657&m_search=tcp+state

-> tcp state diagram 

 




네트워크 인프라에서 hub와 스위치 차이

 

64쪽 HUB = 전기적 신호를 뿌려주는 장비

네트워크 보내는 장비 

 

몇가지 문제가 있음 = > 

 

더미허브 -> 묶어서 한번에

스위치 허브 -> 각각

 

둘다 안전하지는 않음 but  스위치가 빠름.

 

스위치는 2계층 => llc , mac , crc체크 

또한 스위치는 토폴로지를 구성하기 위한장비

 

스위치느ㄴ 각각 포트별 도메인이 있다.



라우터

 

라우팅은 노드별 최상의 노드를 선택해 갈수이ㅆ게 해주는것인데

라우터와 라우터 사이를 홉이라고한다.

 

최단거리를 찾아갈수있게 해주는 것이 라우터이다.

 

세션계층에서 하는 QOS를 위한 지원도 해준다.

 

*ICMP리다이렉트 => 통신시 주소가 바뀔수도있는데 이때 알려주는 기능



*포트포워딩

*리얼 IP

*routing table =  갈방향을 명시

패킷 수신시에 목적지 IP주소를 라우팅 테이블에서 찾아서 해당 인터페이스에 전달하는 것

 

라우터랑 스위치는 주소형식만 다른게 아니라 OS자체가 다름,하는일이다른

라우팅 프로토콜은 _ 다른 네트워크와 내 네트워크를 연결 시켜주거나, 어떻게 연결시킬것인가 같은 역할을 하는 것

 

스위치는 맥 주소를 이용해 포트를 이용해 네트워크 연결시켜주는 장비인 것,  



DHCP

 

DNS서버 - 



Dns 재귀질의 , 순환질의

 

pc -> 회사 DNS -> root name server -> 1차 도메인의 네임에서 

 

Dns는 질문쿼리를 다  UDP로 데려온다.




-wireshark 실습

새창 (wireshark창)

sudo wireshark

 

원래창

student@student-Aspire-E5-576:~$ nslookup

> server 192.168.0.26

Default server: 192.168.0.26

Address: 192.168.0.26#53

> daum.net

Server:       192.168.0.26

Address:    192.168.0.26#53

 

Non-authoritative answer:

Name:    daum.net

Address: 211.231.99.17

Name:    daum.net

Address: 211.231.99.80

Name:    daum.net

Address: 203.133.167.16

Name:    daum.net

Address: 203.133.167.81

> ^Cstudent@student-Aspire-E5-576:~$





dns  cache 서버 = 서비스를 하는 기능

local 서버=우리회사의 local서버는 위의 dns cache서버를 이용



 Received 712 bytes from 192.5.5.241#53(f.root-servers.net) in 3 ms

로드 밸런스 -> DNS역할

L4스위치 layer 4를 지원 

가상 인터페이스를 만들어 장비와 장비연결

 

일반 컴퓨터는 캐쉬 먼저 이후에 dns 파일 검색,



** DNS 패킷분석 http://blog.naver.com/PostView.nhn?blogId=wergreat10&logNo=220188907219

참고



TCP UDP로 실행






-http 웹서버

운영시에 http  상태코드는 필수

오류나 로그파일 등은 status code 로 나타내기 때문에 코드해서이 필수

 

1. 웹 서버와 WAS( Web Application Server )

  • 웹 서버는 정적인 컨텐츠( html, css, js )를 제공하는 서버입니다.

    • ex) Apache, Nginx 

  • WAS는 DB 조회나, 어떤 로직을 처리해야 하는 동적인 컨텐츠를 제공하는 서버입니다.

    • ex) Tomcat, Jeus

즉, 웹 서버와 WAS의 차이는 어떤 타입의 컨텐츠를 제공하느냐의 차이입니다.

웹 서버와 WAS는 각각 독립적으로 존재할 수 있습니다.

대부분의 WAS는 정적인 컨텐츠를 제공해주고 있기 때문에, 웹 서버 없이 WAS만 존재할 수 있습니다.

그래서 WAS는 웹 서버를 포함하는 개념이라고 생각해도 될 것 같습니다.

2. 웹 서버 사용 이유

1) WAS가 해야 할 일의 부담을 줄이기 위해서 입니다.

WAS 앞에 웹 서버를 둬서 웹 서버에서는 정적인 문서만 처리하도록 하고, WAS는 애플리케이션의 로직만 수행하도록 기능을 분배하여 서버의 부담을 줄이기 위한 것입니다.

 

 

위의 그림처럼 WAS앞에 웹 서버를 둠으로써 서버의 부담을 줄일 수 있습니다.

웹 서버에서는 플러그인 형태로 WAS를 연결하면 일 처리를 나눌 수 있겠죠.



2) WAS의 환경설정 파일을 외부에 노출시키지 않도록 하기 위해서입니다.

클라이언트와 연결하는 포트가 직접 WAS에 연결이 되어 있다면 중요한 설정 파일들이 노출될 수 있기 때문에 WAS 설정 파일을 외부에 노출시키지 않도록 하기 위해서 웹 서버를 앞단에 배치시킵니다.

웹 서버와 WAS에 접근하는 포트가 다르기 때문에, WAS에 들어오는 포트에는 방화벽을 쳐서 보안을 강화할 수도 있습니다.



http 의 서비스부분

(정리)

http는 기본적으로 80번 포트에 tcp를 이용하는데

버전이 0.9 1.0 1.1 세가지 있음



통신을 하기위한 http 버전이 있음. 

-메소드라는 것이 존재 / 통신방식 GET,POST,HEAD

GET - URL 입력창에 255자까지 입력해 전송

POST는 - http 헤더에 content-length 부분에 우리가 사용할 공간을 지정

content-length 를 이용해서 http body 에 공간을 확보한 후 데이터를 담아서 전송

 

결국 GET, POST 둘다 안전한 것은 아니다.

 

HTTP 통신은 중요한 정보를 반드시 암호화해서 https또는 HSTS(HTTP Strict Transport Security) 

 

http 80 tcp -> (80 -> 443)  SSL/TLS 방식 적용 -> https

https는 80-> 443 443으로 간 정보를 80으로 만들 수만 있다면  얼마든지 평문으로 볼수가 있다.

(ex) Sslstrip공격



구글이 네이버 메인페이지를 안전하지 않음으로 띄움. https가 아니기대문

 

https 가 풀리지 않게 고정할 수 있는 방법을 연구, hsts가 chrome버전을 통한 웹사이트로 이동시 풀리지않게 지원을 하기위해 만드는 중.

앞으로 hsts를 지원하는 웹사이트가 더 늘 에정 

https://rsec.kr/?p=315



원래는 80번 포트로 송ㅇ신하는 것을 통으로 443 이라는 

ssl 버전 3 




student@student-Aspire-E5-576:~$ sudo apt-get install telnetd -y

[sudo] password for student:

Reading package lists... Done

Building dependency tree       

Reading state information... Done

The following additional packages will be installed:

  openbsd-inetd tcpd

The following NEW packages will be installed:

  openbsd-inetd tcpd telnetd

0 upgraded, 3 newly installed, 0 to remove and 60 not upgraded.

Need to get 89.8 kB of archives.

After this operation, 294 kB of additional disk space will be used.

Get:1 http://kr.archive.ubuntu.com/ubuntu bionic/universe amd64 tcpd amd64 7.6.q-27 [24.2 kB]

Get:2 http://kr.archive.ubuntu.com/ubuntu bionic/universe amd64 openbsd-inetd amd64 0.20160825-3 [26.3 kB]

Get:3 http://kr.archive.ubuntu.com/ubuntu bionic/universe amd64 telnetd amd64 0.17-41 [39.3 kB]

Fetched 89.8 kB in 2s (48.8 kB/s)

Selecting previously unselected package tcpd.

(Reading database ... 171339 files and directories currently installed.)

Preparing to unpack .../tcpd_7.6.q-27_amd64.deb ...

Unpacking tcpd (7.6.q-27) ...

Selecting previously unselected package openbsd-inetd.

Preparing to unpack .../openbsd-inetd_0.20160825-3_amd64.deb ...

Unpacking openbsd-inetd (0.20160825-3) ...

Selecting previously unselected package telnetd.

Preparing to unpack .../telnetd_0.17-41_amd64.deb ...

Unpacking telnetd (0.17-41) ...

Setting up tcpd (7.6.q-27) ...

Setting up openbsd-inetd (0.20160825-3) ...

Created symlink /etc/systemd/system/multi-user.target.wants/inetd.service → /lib/systemd/system/inetd.service.

Setting up telnetd (0.17-41) ...

Adding user telnetd to group utmp

Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

Processing triggers for ureadahead (0.100.0-21) ...

ureadahead will be reprofiled on next reboot

Processing triggers for systemd (237-3ubuntu10.38) ...

student@student-Aspire-E5-576:~$ sudo systemctl enable inetd

student@student-Aspire-E5-576:~$ sudo systemctl start ineted

Failed to start ineted.service: Unit ineted.service not found.

student@student-Aspire-E5-576:~$ sudo systemctl start inetd

student@student-Aspire-E5-576:~$ ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

       valid_lft forever preferred_lft forever

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: enp3s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000

    link/ether d8:c4:97:46:35:60 brd ff:ff:ff:ff:ff:ff

    inet 192.168.0.22/24 brd 192.168.0.255 scope global dynamic noprefixroute enp3s0f1

       valid_lft 4350sec preferred_lft 4350sec

    inet6 fe80::872:626f:6a88:cb2/64 scope link noprefixroute

       valid_lft forever preferred_lft forever

3: wlp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000

    link/ether 70:c9:4e:6b:05:a1 brd ff:ff:ff:ff:ff:ff

student@student-Aspire-E5-576:~$ telnet  192.168.0.25

Trying 192.168.0.25...

Connected to 192.168.0.25.

Escape character is '^]'.

Ubuntu 18.04.4 LTS

student-Aspire-E5-576 login: student

Password:

Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-51-generic x86_64)

 

 * Documentation:  https://help.ubuntu.com

 * Management:     https://landscape.canonical.com

 * Support:        https://ubuntu.com/advantage



 * Canonical Livepatch is available for installation.

   - Reduce system reboots and improve kernel security. Activate at:

     https://ubuntu.com/livepatch

 

51 packages can be updated.

0 updates are security updates.

 

Your Hardware Enablement Stack (HWE) is supported until April 2023.

 

The programs included with the Ubuntu system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

 

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by

applicable law.

 

student@student-Aspire-E5-576:~$ ^C

student@student-Aspire-E5-576:~$ ^C

student@student-Aspire-E5-576:~$

 

텔넷 이용해서 다른 사람의 아이피 입력 후 원격으로 접속하는 것

실습

 

'IT 기초, 네트워크, 리눅스 > 1. 네트워크' 카테고리의 다른 글

2일차  (0) 2020.07.19
네트워크 1일차  (0) 2020.07.19
네트워크 정리4  (0) 2020.06.07
네트워크 기초정리 3  (0) 2020.06.07
네트워크 기초 정리 1  (0) 2020.06.07