๋‚ด ์ธ์ƒ์—์„œ ๋ฏฟ์„ ๊ฑด ์˜ค์ง ๋‚˜ ์ž์‹ ๋ฟ!

The only one you can truly trust is yourself.

๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/๋„คํŠธ์›Œํฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

IPv4์—์„œ IPv6๋กœ ๋„˜์–ด๊ฐ€๊ธฐ

๐ŸŽฎinspirer9 2021. 2. 3. 00:45
728x90
๋ฐ˜์‘ํ˜•

๋น„์ œ์ด์˜ ๋„คํŠธ์› ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ€์ด๋“œ(Beej's Guide to Network Programming)์— 4๋ฒˆ์งธ์— IPv4์—์„œ IPv6๋กœ ๋„˜์–ด๊ฐ€๊ธฐ๊ฐ€ ์žˆ๋‹ค. 4. Jumping from IPv4 to IPv6

1. ๋จผ์ € getaddrinfo()๋ฅผ ์‚ฌ์šฉํ•ด์„œ struct sockaddr ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค, ์†์œผ๋กœ ๊ตฌ์กฐ์ฒด ์ฒด์›Œ๋„ฃ์ง€๋ง๊ณ . ์ด๊ฑด IP ๋ฒ„์ ผ-์•„๊ทธ๋…ธ์Šคํ‹ฑ(IP ๋ฒ„์ ผ์„ ์•Œ ์ˆ˜ ์—†๋‹ค๋Š” ์ด๋ก ์ธ๊ฐ€?)์„ ์œ ์ง€์‹œ์ผœ์ฃผ๊ณ , ๊ทธ ๋‹ค์Œ ๋งŽ์€ ์ž‘์—…๋“ค์„ ์•ˆํ•ด๋„ ๋˜๊ฒŒ ํ•ด์ค˜.

2. IP๋ฒ„์ ผ์ด๋ž‘ ๊ด€๋ จ๋œ ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๊ฑฐ ๊ฐ™์€ ์ „๋ถ€ ์ฐพ์•„์„œ ๋„์šฐ๋ฏธ ํ•จ์ˆ˜๊ฐ€์ง€๊ณ  ๊ณ ์ณ.

3. AF_INET๋ฅผ AF_INET6๋กœ ๋ฐ”๊พผ๋‹ค.

4. PF_INET๋ฅผ PF_INET6๋กœ ๋ฐ”๊พผ๋‹ค.

5. INADDR_ANY assignments๋„ in6addr_any assignments๋กœ ๋ฐ”๊พผ๋‹ค. ์ด๊ฒƒ๋“ค์€ ์„œ๋กœ ์•ฝ๊ฐ„ ๋‹ค๋ฅด๋‹ค.

struct sockaddr_in sa;

struct sockaddr_in6 sa6;

sa.sin_addr.s_addr = INADDR_ANY; // use my IPv4 address

sa6.sin6_addr = in6addr_any; // use my IPv6 address

 

6. IN6ADDR_ANY_INIT ๊ฐ’์„ ๊ตฌ์กฐ์ฒด in6_addr์— ํ• ๋‹นํ•œ๋‹ค.

 struct in6_addr ia6 = IN6ADDR_ANY_INIT;

7. struct sockaddr_in ๋Œ€์‹  struct sockaddr_in6๋ฅผ ์“ฐ๊ณ  (๊ตฌ์กฐ์ฒด structs ์ฐธ๊ณ )

9. in_addr ๋Œ€์‹  struct in6_addr๋ฅผ ์“ด๋‹ค. (๊ตฌ์กฐ์ฒด structs ์ฐธ๊ณ )

11. inet_aton()์ด๋‚˜ inet_addr() ๋Œ€์‹  inet_pton().

12. inet_ntoa() ๋Œ€์‹  inet_ntop().

13. gethostbyname() ๋Œ€์‹  getaddrinfo().

15. gethostbyaddr() ๋Œ€์‹  superior getnameinfo()๋ฅผ ์‚ฌ์šฉ.
(gethostbyaddr()๋ฅผIPv6์—์„œ ์—ฌ์ „ํžˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ)

16. INADDR_BROADCAST๋Š” ์ด์   ๋”์ด์ƒ ์ž‘๋™์•ˆํ•œ๋‹ค. IPv6์˜ ๋ฉ€ํ‹ฐ์บ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด๋ด.

17. ๋.

728x90
๋ฐ˜์‘ํ˜•